特定のヘッダファイル(ライブラリ自体の機能)の使用を特定のCppファイルで制限する最良の方法は何ですか?そして、それが設定されたルールに従わない場合、コンパイルは停止するべきです。
これは余分なインクルードを見つけることではありません。これは、開発者をアプリケーションフレームワークに制限することに関するものです。
たとえば、osUtils.hがosUtils.hとして存在する場合、このアプリケーションの開発フレームワークでは、osUtils.hをファイルシステムの操作に使用してフォルダーを作成するように要求しています。 sys/statをインクルードしてmkdir()メソッドを使用することによって、このルールを破るのが便利であると個々のモジュールが常に判断する可能性が常にあります。しかし、ここでフレームワークを提供しようとする意図が、クロスプラットフォームの抽象化または特殊なパス処理ロジックのためには、フレームワークから外すことによって目的を失うことになります。これを制限する方法はありますか?特定のファイル(この場合はosUtils.hファイルを除く)のsys/stat.hの使用を制限すると問題を解決するのに役立ちます。それを実装する方法はルールが壊れてもコンパイルされません。C++でのヘッダ包含の制限
-1
A
答えて
0
コンパイルを破ることでこれを行う方法がわかりません - 有効なコードのためにコンパイルに失敗したという考えは私には魅力的ではありません。他のアイデアがあります:
- コードレビュー。これが正しく行われれば、このようなエラーを防ぐことができます。
- 私は (彼らはそう ルールXYZ 『「を含んでいない』、「あなたが使用しているものが含ま」のようなものを確認することができますがなければならない)いくつかの静的コード分析ツールは それらのものを検出することができますことをかなり確信しています
- この静的分析ツールを準備しておくと、人々が使用するようになって、それによって示されたエラーが修正される問題があります。あなたが使うことができる1つのオプションはgit hookです。新しいコードが静的解析をパスしない場合は、コミットを拒否します。フックを使用できない場合、またはしたくない場合は、静的検査の違反をチェックする個別のCIジョブを作成します。その後、誰がいつ悪いコードを押したのかがわかります。
関連する問題
- 1. ビジュアルスタジオC++フォーム複数包含
- 2. C++巡回包含問題
- 3. C++:包含クラスから関数を含むクラスの問題
- 4. 制限アイテムリストc#
- 5. ダウンロードレート制限C#
- 6. C++のプリプロセッサディレクティブの制限
- 7. ポリゴン包含
- 8. C#属性の制限
- 9. C#制限付きのインクルード
- 10. ファイルパスの文字制限C#
- 11. asp.netでのデータグリッド項目の制限C#
- 12. C#ディクショナリでの値型の制限:
- 13. C#のファイルサイズの制限または制限
- 14. ローカルrsyncの包含/除外
- 15. 枝:Javascriptの包含順序
- 16. C#値オーバーフロー制限
- 17. C#:XMLデシリアライズ制限
- 18. 動的に包含
- 19. C++での制限付き.exe出力
- 20. C#でプロセスのインスタンスを1に制限
- 21. C言語でのFPS制限
- 22. C++ - クラス内からのtypedef構造体の包含
- 23. Makefile clarification:別のヘッダを含むヘッダを含むファイル
- 24. ヘッダのC/C++ネームスペース
- 25. セットC中のプロセスのメモリ制限
- 26. C#アプリケーションのユーザー数の制限
- 27. Cの凸包の長さ
- 28. C#シリアル受信制限
- 29. Asynchronus Webservicesスレッド制限C#
- 30. C++ヘッダのプロトタイプエラー
エンコーディングコーディング標準は、プログラミングよりも管理上の問題です。 – Barmar
APIクラスで意図しない使用から保護するための設計を行います。特定のヘッダーファイルの制限に制限されません。 –