2011-11-03 55 views
5

我正在繼承一個相當龐大的代碼庫,不幸的是它展示了很多「壞習慣」。我的一個最大的個人的眼中釘的聲明幾個變量在一個表達式是這樣的:爲C++代碼檢測樣式問題的工具?

int x, y, z; 

個人而言,我更喜歡:

int x; 
int y; 
int z; 

這讓我可以方便地單獨調整類型,並避免與問題指針類型是這樣的:

int *x, y, z; // whoops I meant to make y and z pointers too! 

另外,我很想檢測何時類型,其尺寸比sizeof(void*)大正按值傳遞。

我還想檢測和糾正其他「風格」問題,但這些是最令人討厭的IMO。什麼是最好的工具呢?

+0

下面提到了很多很好的工具,但沒有什麼能勝過代碼審查。 –

回答

2

我用來檢查C++文件風格的最好工具之一是KWStyle。不過,我不太確定它是否支持您的所有要求。

+0

我接受這個答案。即使我已經解決了一個緩慢而穩定的代碼審查。這個答案是最直接適用於我的問題。 –

1

我的感覺是,你想使用的風格是特定於你的需求。所以你需要定製一個工具來爲你做檢查。

我相信你的例子(假設你的代碼庫足夠大,使得努力值得)是一個非常好的情況下編譯器定製

最近(即4.6)的GCC版本可以擴展通plugins,並且還可以通過使用GCC MELT,這是一個高級別域專用語言緩解GCC擴展的發展定製它延伸GCC。當然,要擴展GCC(通過編碼C語言中的插件或者MELT中的擴展),你必須理解它的內部表示(特別是Gimple &樹),這需要一些工作。

P.S.我是GCC MELT的主要開發人員。

+0

GCC MELT看起來非常酷,我一定會在某個時候檢查一下。如果不是這個項目,肯定有很酷的東西,我可以在其他地方用它做! –

+0

然後請聯繫我或[email protected],因爲MELT的記錄確實很糟糕...... –

1

您可以嘗試cppcheck進行靜態代碼分析。 This question及其答案提供了有關靜態代碼分析工具的更多提示。

+0

cppcheck被證明能很好地發現代碼中的基本常見問題,但絕對沒有重點關注樣式。 –

2

我用Artistic Style or astyle格式化我的C++代碼和JAVA距今約2 Years.It可以在很大的定製detail.Probably有很多更好的現在......

但我很有用。