2015-06-20 1936 views
5

我正在使用cppcheck進行靜態分析。爲了加速審查過程,我想設置cppcheck來查找一些自定義規則,例如 以檢查geter函數是否定義爲const。爲cppcheck編寫自定義規則

如果任何人有爲cppcheck編寫自定義規則的經驗,請您提供一些示例來編寫自定義規則?

P.S我已經做了一些研究,找到一個工具,這將允許我編寫自定義規則並使審查過程更快。 我覺得這個話題這些鏈接

What open source C++ static analysis tools are available?

C++ static code analysis tool on Windows

A free tool to check C/C++ source code against a set of coding standards?

+0

嗨,TM_。針對離線資源的請求和工具建議請求對於stackoverflow是無關緊要的。 –

+1

嗨@DrewDormann其實我的問題是爲cppcheck編寫自定義規則。如果即使只是提到脫離主題,我也可以從我的問題中刪除這部分。 –

+0

我敢打賭,這將有所幫助。我重新閱讀你輸入的每個句子並問自己*「這是個問題嗎?」*我無法在任何地方找到問題。 –

回答

6

我是一個Cppcheck開發商。

您也許可以使用--rule和--rule-file選項來添加這些規則。也許你可以使用正則表達式,例如:

\sget[A-Za-z]+\(\)\s+{\s+return 

這取決於你的代碼庫。

如果您可以編寫正則表達式,那麼這是創建自定義規則的最直接和最簡單的方法。

欲瞭解更多信息,在這裏閱讀「編寫規則」的文章: http://sourceforge.net/projects/cppcheck/files/Articles/

但也許你要編寫搜索使用Cppcheck SymbolDatabase,tokenlist和語法樹這樣的getter方法更復雜的規則。那麼你不能使用--rule和--rule-file。您有以下選擇:

  • 使用 - 轉儲並編寫您自己的自定義腳本來讀取輸出數據(xml)。
  • 編寫C++代碼並將其編譯到Cppcheck中。這是非常簡單的imho,但要求你自己編譯Cppcheck。
+1

Hi @DanielMarjamäki感謝您的回覆。因此,如您所提供的文檔中所寫的規則是XML文件,有沒有辦法使用此自定義創建的規則文件與cppcheck GUI?我在哪裏可以在GUI中設置新規則? –

+1

目前,您不能在GUI中使用規則。我認爲改進GUI會相對容易,但沒有人想這樣做。 –

+1

好的,謝謝我將嘗試使用Windows cmd終端。 –