2010-04-04 93 views
7

我正在尋找一個可定製的腳本/工具,以檢查和強制執行C/C++代碼上的編碼/命名約定。C/C++代碼的編碼和命名約定的測試

它應該檢查例如:

  • 代碼線在一些長度纏繞。
  • 私有變量有前綴_
  • 代碼正確縮進。
  • 所有功能都記錄在案。

我正在從事的許多項目都是由傾向於具有各種內部編碼和命名約定的客戶外包的。

+4

你當然不希望任何變量開始與'_',在名稱中使用'_'規則複雜: http://www.scitools.com/ 和我的託管包裝,因爲一個好的數字是爲編譯器寫入器等保留的...... – 2010-04-04 12:53:59

+3

@Matthieu:只保留以兩個下劃線或下劃線和大寫字母開頭的名字。只要所有的私有變量都以下劃線和小寫字母(或下劃線和數字)開頭,那就沒問題。 – 2010-04-04 13:01:32

+2

@Matthieu:用'_'前綴成員變量是一個相當常見且沒有問題的約定。以'_'開頭的標識符僅保留在全局名稱空間中。見例如http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/language/ref/ident.htm – 2010-04-04 13:01:42

回答

2

GNU indent工具可以做你想要的一些東西。不知道它是否可以檢查文件,但其餘聽起來可行

+0

我喜歡GNU indent,但它不測試編碼和命名約定。 – 2010-04-08 13:33:53

3

不知道它是否真的值得的時間,但如果你真的想,你可以嘗試建立類似於google's cpplint,它檢查他們的style guide

我個人認爲徹底的評論和人們對某些約定的承諾是確保代碼「正確縮進」和變量名稱一致的更好方法。也許可以投資製作像Google這樣的文檔,描述可接受風格的細節,並讓公司的人員接受並遵守它。

爲什麼人類比腳本更好?答案很簡單:人們必須稍後處理代碼,他們應該關心他們正在編寫的內容。像i這樣的變量名字對於腳本來說可以,但是不會從我眼中溜走,如果它是clientCount,它應該被恰當地命名,腳本能夠做到這一點,它可能會很快接管世界。 :)

+0

感謝您分享。 – 2013-04-19 19:24:54

+0

似乎cpplint沒有檢查變量和類的命名約定? – cxwangyi 2017-01-03 05:04:57

3

Universal Indent在一個漂亮的GUI中包裝了大量的縮進工具。如果有什麼適合你,它可能包括在內。 (Here是功能列表)支持所有主要的操作系統。

還有其他的工具檢查其他的東西:

皮棉安全和雜項其他東西。

對於您可以使用Krazy Qt的程序。因爲它隱藏在KDE源代碼樹(質量保證子目錄......某處)的深處,所以找到,下載並繼續下去有點麻煩。但一旦工作真的很酷。它檢查各種可愛的東西。像未使用的Qt頭文件一樣。字符串利用率不佳缺少用戶可見字符串的tr()語句,怪異的迭代結構,點點。

不言而喻的是,提到的所有工具都是可定製的。

1

基本上,其他人說過的話。但我可以指出:

  • 所有功能都記錄在案。

不能真正被工具檢查 - 它需要人眼和理解。我懷疑我們都看過這樣的東西:

//------------------------------------------------------------- 
// Name: foo 
// Purpose: 
// Returns: integer 
//------------------------------------------------------------- 

換句話說,樣板文件「告訴你什麼都沒有。這種事情只能通過代碼評論來消除。

0

如果你有很多錢,你應該檢查出Klocwork。它能夠檢查源代碼是否符合以下風格指南。我在不同的商店使用過它。 A 很多的工作設置和維護,但非常強大。

0

我使用瞭解scitools製作的C++。它帶有perl和C api。不過,我爲它編寫了一個託管API。 這個工具允許你掃描你的源代碼並像反射對本地代碼那樣分析它。它可以非常好地讓你獲得變量,類等的名字......我個人使用這個API編寫了幾十個靜態分析工具。 使用此工具執行各種編碼標準將是一件容易的事情。 尤其是變量名稱標準。

該產品的鏈接: http://understandapi.codeplex.com/