2016-11-09 4 views
-1

特定のヘッダファイル(ライブラリ自体の機能)の使用を特定のCppファイルで制限する最良の方法は何ですか?そして、それが設定されたルールに従わない場合、コンパイルは停止するべきです。
これは余分なインクルードを見つけることではありません。これは、開発者をアプリケーションフレームワークに制限することに関するものです。
たとえば、osUtils.hがosUtils.hとして存在する場合、このアプリケーションの開発フレームワークでは、osUtils.hをファイルシステムの操作に使用してフォルダーを作成するように要求しています。 sys/statをインクルードしてmkdir()メソッドを使用することによって、このルールを破るのが便利であると個々のモジュールが常に判断する可能性が常にあります。しかし、ここでフレームワークを提供しようとする意図が、クロスプラットフォームの抽象化または特殊なパス処理ロジックのためには、フレームワークから外すことによって目的を失うことになります。これを制限する方法はありますか?特定のファイル(この場合はosUtils.hファイルを除く)のsys/stat.hの使用を制限すると問題を解決するのに役立ちます。それを実装する方法はルールが壊れてもコンパイルされません。C++でのヘッダ包含の制限

+0

エンコーディングコーディング標準は、プログラミングよりも管理上の問題です。 – Barmar

+0

APIクラスで意図しない使用から保護するための設計を行います。特定のヘッダーファイルの制限に制限されません。 –

答えて

0

コンパイルを破ることでこれを行う方法がわかりません - 有効なコードのためにコンパイルに失敗したという考えは私には魅力的ではありません。他のアイデアがあります:

  1. コードレビュー。これが正しく行われれば、このようなエラーを防ぐことができます。
  2. 私は
  3. (彼らはそう ルールXYZ 『「を含んでいない』、「あなたが使用しているものが含ま」のようなものを確認することができますがなければならない)いくつかの静的コード分析ツールは それらのものを検出することができますことをかなり確信しています
  4. この静的分析ツールを準備しておくと、人々が使用するようになって、それによって示されたエラーが修正される問題があります。あなたが使うことができる1つのオプションはgit hookです。新しいコードが静的解析をパスしない場合は、コミットを拒否します。フックを使用できない場合、またはしたくない場合は、静的検査の違反をチェックする個別のCIジョブを作成します。その後、誰がいつ悪いコードを押したのかがわかります。