前段時間,我爲方舟編譯器提交了一些clang-tidy的檢查規則,這些規則位於項目目錄之下的.clang-tidy文件之中。本文將逐條解讀一下這些規則。
1、readability-identifier-naming (規則2.1.1)
這條規則是用來檢查名命名規則的。在這條總的規則之下,還有關於具體要檢查項的key和value。比如:
- key: readability-identifier-naming.ClassCase
value: CamelCase
這裏ClassCase說明檢查的是類的命名,CamelCase說明要求的風格是大駝峯命名法。方舟裏涉及到命名規則,目前有CamelCase(大駝峯命名法)、camelBack(小駝峯命名法)和lower_case(小寫命名法)。涉及到的檢查項主要有ClassCase(類)、StructCase(結構體)、TypedefCase(Typedef)、EnumCase(枚舉)、EnumConstantCase(枚舉常量)、UnionCase(聯合)、NamespaceCase(命名空間)、FunctionCase(函數)、VariableCase(變量)、ConstantCase(常量)。
2、readability-function-size
這條規則是用來檢查函數的大小的。總規則之下,也包含了兩條具體的檢查項。
- key: readability-function-size.StatementThreshold
value: 50
檢查函數內的語句不超過50條。(建議8.1.1)
- key: readability-function-size.ParameterThreshold
value: 5
檢查函數的參數不超過5個。(建議8.3.3)
3、readability-braces-around-statements
語句必須在大括號之內。這裏主要是針對條件判斷之後進行執行的語句,比如if-else,哪怕是隻有一條語句,也應該在括號之內。(規則3.6.1,規則3.7.1)
4、readability-magic-numbers
魔鬼數字檢查。(建議9.1.3)
5、misc-unused-parameters
未使用函數參數檢查。
6、modernize-use-nullptr
檢查使用nullptr,而不是NULL或0。(規則10.1.3)
7、modernize-replace-auto-ptr
檢查禁止使用auto_ptr。(規則9.5.2)
8、modernize-use-noexcept
檢查不使用異常機制。(規則11.4.1)
9、modernize-use-override
檢查重寫虛函數時使用override關鍵字。(規則10.1.1)
10、performance-move-const-arg
檢查禁止使用std::move操作const對象。(規則10.1.4)
11、cppcoreguidelines-pro-type-cstyle-cast
不使用C風格轉換檢查。(規則9.3.1)
12、cppcoreguidelines-pro-type-reinterpret-cast
不使用reinterpret_cast 檢查。(建議9.3.2)
13、cppcoreguidelines-pro-type-const-cast
不使用const_cast檢查。(建議9.3.3)
——————
括號中的規則和建議等字樣,對應的是方舟編譯器編程規範中的具體要求。