我继承了一个相当大的代码库,不幸的是它表现出很多“坏习惯”。我最大的个人宠儿之一就是在一个表达式中声明几个变量:
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。但是我不太确定它是否支持您的所有要求。
答案 1 :(得分:2)
我使用Artistic Style or astyle来格式化我的C ++和JAVA代码大约2年。它可以非常详细地定制。可能现在有很多更好的...
但它对我非常有用。
答案 2 :(得分:1)
我的感觉是您想要使用的风格是根据您的需求而定的。所以你需要自定义一个工具来为你做检查。
我相信你的例子(假设你的代码库大到足以让努力变得有价值)是编译器定制的非常好的案例。
GCC的最近(即4.6)版本可以通过plugins进行扩展,您也可以使用GCC MELT自定义它来扩展GCC,这是高级别领域特定语言,以简化GCC扩展的开发。
当然,要扩展GCC(通过编写C中的插件或MELT中的扩展),您必须了解其内部表示(特别是Gimple& Tree),这确实需要一些工作。
P.S。我是GCC MELT的主要开发人员。
答案 3 :(得分:1)
您可以尝试cppcheck进行静态代码分析。 This question及其答案提供了有关静态代码分析工具的更多提示。