【问题标题】:Tool to detect style issues for c++ code?用于检测 C++ 代码样式问题的工具?
【发布时间】:2023-03-16 00:15:01
【问题描述】:

我继承了一个相当大的代码库,不幸的是它表现出很多“坏习惯”。我个人最大的烦恼之一是在一个表达式中声明多个变量,如下所示:

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。最好的工具是什么?

【问题讨论】:

  • 下面提到了很多好工具,但没有什么能比得上代码审查。

标签: c++ coding-style


【解决方案1】:

我用过的最好的工具之一是KWStyle,用于检查 C++ 文件的样式。但是我不太确定它是否支持您的所有要求。

【讨论】:

  • 我接受这个答案。即使我已经决定进行缓慢但稳定的代码审查。这个答案最直接适用于我的问题。
【解决方案2】:

我使用Artistic Style or astyle 格式化我的C++ 和JAVA 代码大约有2 年了。它可以非常详细地定制。现在可能有很多更好的......

但它对我很有用。

【讨论】:

    【解决方案3】:

    我的感觉是你想要使用的风格是特定于你的需求的。所以你需要定制一个工具来为你做检查。

    我相信您的示例(假设您的代码库足够大,值得付出努力)是编译器自定义的非常好的案例

    GCC 的最新(即 4.6)版本可以通过plugins 进行扩展,您还可以通过使用GCC MELT 自定义它来扩展 GCC,这是一种高级域特定语言 简化 GCC 扩展的开发。

    当然,要扩展 GCC(通过在 C 中编写插件或在 MELT 中进行扩展),您必须了解其内部表示(尤其是 Gimple 和 Tree),这确实需要一些工作。

    附:我是 GCC MELT 的主要开发者。

    【讨论】:

    • GCC MELT 看起来真的很酷,我一定会在某个时候检查一下。如果不是为了这个项目,我当然可以在其他地方做一些很酷的事情!
    • 那么请联系我,或者 gcc-melt@googlegroups.com,因为 MELT 的文档记录真的很糟糕......
    【解决方案4】:

    您可以尝试cppcheck 进行静态代码分析。 This question 及其答案提供了更多关于静态代码分析工具的提示。

    【讨论】:

    • cppcheck 被证明非常擅长发现代码的基本常见问题,但肯定不太关注样式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多