在C代码中捕捉愚蠢错误的任何工具?

时间:2008-10-15 18:43:57

标签: c findbugs lint

我有一个令人讨厌的拼写错误浪费了我的时间和同事的时间,它是这样的:

for (i = 0; i < blah; i++); // <- I had a semi-colon here, that's the bug!
{
  // Some awesome logic here
}

首先,这是非常尴尬的,其次,我不应该重复这一点。我对C相对比较新。在Java中,我想我可以使用FindBugs来捕获这些错误,我应该使用什么工具进行C代码?棉绒?

11 个答案:

答案 0 :(得分:15)

是的,PC-Lint可能是最好的工具。

答案 1 :(得分:7)

除了Lykathea's PC-Lint suggestion之外,如果提高编译器的警告级别,您还可以获得更好(或至少更多)的诊断。类似/W4-Wall

的内容

虽然我不确定你的特定问题是否会被捕获(即使启用了所有警告,MS VC也似乎没有标记它)。我认为这是因为当作为循环控制表达式的副作用完成工作时,for循环不是一个不常见的习惯用法。

答案 2 :(得分:4)

过去从我的头脑中拯救了我的一些事情:

  • 如果(3 == bla)而不是(bla == 3),请使用,因为如果拼错并输入(3 = bla),编译器会抱怨。

  • 使用所有警告开关。你的编译器应该警告你这样的空语句。

  • 尽可能使用断言并进行防御性编程。努力使你的程序尽早失败,你会看到这样的弱点。

  • 不要试图绕过编译器或操作系统已经实施的任何安全措施。它们也是为了您的编程而易于使用。

答案 3 :(得分:4)

另请参阅clang static analysis

答案 4 :(得分:3)

首先,我要了解splintgdb。如果您需要更高级,请在这两个工具的基础上进行构建但他们是一个良好的开端。

答案 5 :(得分:2)

GCC拥有Lint通过warning flags内置的大部分功能。

答案 6 :(得分:0)

像Eclipse这样的任何良好的GUI编程环境(“IDE” - 集成开发环境)都会在这种情况下生成警告。

答案 7 :(得分:0)

一个好的语法高亮显示器会使这样的一些案例更加明显。

答案 8 :(得分:0)

我建议看看你是否有enforce MISRA standards的能力。它们是经过深思熟虑和许多规则编写的,这些规则对于编译器来说很容易检查。例如,我使用的规则要求所有NOP命令都有自己的行。这意味着当你放一个;在循环语句结束时,它将通过一个错误说明它不在它自己的行上。

答案 9 :(得分:0)

Programming Research的

QA·C是C的另一个很好的静态分析工具。

答案 10 :(得分:-1)

在这个(旧)版本的How to Shoot Yourself In the Foot以及网络上的许多其他版本中, C 始终是允许最简单程序的语言。在 C 中编程时,您必须记住这一点并小心。如果您需要保护,请选择其他语言。

对于Bjarne Stroustrup(C ++)本人来说,这句话是attributed。致(错)引用:

  

“C让你轻松拍摄自己的脚”

相关问题