2016-11-09 85 views
-1

在某些Cpp文件中限制使用某些頭文件(庫本身的功能)的最佳方法是什麼?如果它沒有遵循既定的規則,編譯應該停止。
這不是找出多餘的包含。這是關於將開發人員限制在應用程序框架中的。
例如,如果存在一個osUtils類作爲osUtils.h,並且如果按照這個,這個應用程序的開發框架要求使用osUtils.h來進行文件系統操作,就像創建一個文件夾一樣。但總是有個別模塊發現通過包含sys/stat和使用mkdir()方法來打破此規則的便利。但是,如果在這裏提供框架的意圖可以說是跨平臺抽象或特殊路徑處理邏輯,那麼通過在框架之外完成目標就會失去目標。有沒有辦法限制這個?例如在某些文件中限制sys/stat.h的使用(本例中的osUtils.h文件除外)可以幫助解決問題。但如何實現它,以便在規則被破壞時不會編譯。在C++中限制頭文件夾

+0

Enfocing編碼標準比編程更像是一個管理問題。 – Barmar

+0

做你的設計,以防止在您的API類無意使用,而不是限制包括特定的頭文件。 –

回答

0

我不知道如何通過打破編譯來做到這一點 - 由於有效的代碼編譯失敗的想法不吸引我。我有一些其他的想法:

  1. 代碼審查。如果這樣做,這應該防止這樣的錯誤。
  2. 我敢肯定,一些靜態代碼分析工具可以幫助檢測 那些事(他們可以檢查東西,如「包括你用什麼」,所以 規則「不包括‘XYZ’應該有)
  3. 如果你準備好這個靜態分析工具,那麼讓用戶使用它並修復它顯示的錯誤是有問題的。你可以使用的一個選項是git鉤子。如果新代碼不通過靜態分析 - 拒絕提交。如果你不能使用鉤子,或者不想 - 做一個單獨的CI作業來檢查違反靜態檢查的情況。然後你會看到誰和什麼時候推送了一些不好的代碼。