我正在开发一个项目,我在UNIX环境中用C编码。 我一直在使用lint工具来检查我的源代码。 Lint已经存在了很长时间(自1979年以来),任何人都可以建议我可以使用更新的代码分析工具吗? 优选地是免费的工具。

===============>>#1 票数:33 已采纳

不要忽视编译器本身。

阅读编译器的文档,找到它可以提供的所有警告和错误,然后启用尽可能多的意义。

还要确保告诉编译器处理错误等警告,这样您就不得不立即修复它们。 (gcc上的“-Werror”)

另外:gcc上的“-Wall” 不会启用所有警告,不要被愚弄。

还要:查看valgrind(免费!) - 它“自动检测[s]许多内存管理和线程错误,并详细介绍你的程序。”

Valgrind不是静态检查器,但它是一个很棒的工具! http://valgrind.org

===============>>#2 票数:15

对于C代码,绝对应该使用Flexelint 我用了将近15年,并发誓。 其中一个非常棒的功能是可以通过代码中的注释(“/ * lint -e123 * /”)有选择地关闭和打开警告。 当你想要一些与众不同的东西时,这就成了一个强大的文档工具。 “我正在关闭警告X,因此,有一个很好的理由我正在做X.”

对于任何有趣的C / C ++问题,请查看他们网站上的一些示例,看看是否可以在不查看提示的情况下找出错误。

===============>>#3 票数:13

我听说过有关clang静态分析仪的好消息 ,IIRC使用LLVM作为它的后端。 如果在您的平台上实现,那可能是一个不错的选择。

据我所知,它不仅仅是语法分析。 例如,“自动错误查找”。

===============>>#4 票数:5

我们一直在使用Coverity Prevent查看C ++源代码。

它不是一个免费的工具(虽然我相信它们提供免费扫描开源项目),但它是你会发现的最好的静态分析工具之一。 我听说它在C上比在C ++上更令人印象深刻,但它帮助我们避免了迄今为止的大量错误。

===============>>#5 票数:5

你可以使用cppcheck 它是一种易于使用的静态代码分析工具。
例如:
cppcheck --enable=all .
将检查当前文件夹下的所有C / C ++文件。

===============>>#6 票数:5

我最近编制了一份我可以使用的所有静态分析工具列表,我仍然在评估它们。 注意,这些主要是安全分析工具。

===============>>#7 票数:1

您可能会发现Uno工具很有用。 这是为数不多的免费非玩具选择之一。 它与lint,Flexelint等的不同之处在于关注少量的“语义”错误(空指针derefs,越界数组索引和未初始化变量的使用)。 它还允许用户定义的检查,例如锁定解锁规则。

我正在努力公开发布一个继承工具 Orion 内容不提供任何内容

===============>>#8 票数:1

类似于Lint的工具通常会遇到“误报”问题:它们报告的问题比实际存在的问题多得多。 如果真正有用的警告的比例太低,则用户学会忽略该工具。 更现代的工具花费了一些精力来关注最有可能/最有趣的警告。

===============>>#9 票数:1

您可以尝试CppDepend ,一个非常完整的静态分析器,可以通过VS插件,IDE或命令行在Windows和Linux上使用,它对于开源贡献者是免费的

===============>>#10 票数:1

PC-lint / Flexelint是非常强大且有用的静态分析工具,并且具有高度可配置性,但遗憾的是它不是免费的。

当第一次使用这样的工具时,它们会产生大量的警告,这使得很难区分主要和次要的警告。 因此,最好尽可能在项目早期开始在代码上使用该工具,然后尽可能频繁地在代码上运行它,这样您就可以在出现新警告时处理它们。

通过这样的持续使用,您很快就会学会如何编写代码,以确认工具应用的规则。

因此,我更喜欢像Lint这样运行相对较快的工具,因此鼓励持续使用,而不是使用较少繁琐的工具,如果有的话,最不常用。

===============>>#11 票数:0

根据Mac OS X手册页,gcc有一个“-Weffc ++”选项:

警告Scott Meyers的Effective C ++书籍违反以下风格指南:

[剪断]

我知道你问过C,但这是我所知道的最接近的......

===============>>#12 票数:0

Sparse是一种计算机软件工具,已在Linux上提供,旨在查找Linux内核中可能存在的编码错误。

Linux验证中心有两个活跃项目旨在提高可加载内核模块的质量。

  1. Linux驱动程序验证(LDV) - 用于Linux设备驱动程序的静态源代码验证的综合工具集。
  2. KEDR框架 - 用于动态分析和验证内核模块的可扩展框架。
  3. 另一个正在进行的项目是Linux文件系统验证,旨在开发用于验证Linux文件系统实现的专用工具集。

===============>>#13 票数:0

lint不断更新...所以为什么你想要一个更新的。

BTW flexelint 棉绒

===============>>#14 票数:0

天儿真好,

我完全同意在设置-Wall之后阅读和消化编译器告诉你的建议。

一个很好的静态分析工具是由David Wheeler编写的FlawFinder 它在寻找各种安全漏洞方面做得很好,

但是,它并不能取代有知识的人阅读您的代码。 正如大卫在他的网页上所说:“傻瓜用工具仍然是个傻瓜!”

干杯,

===============>>#15 票数:0

我发现通常最好使用多个静态分析工具来查找错误。 每个工具的设计都不同,他们可以找到彼此截然不同的东西。

有一些谈判的一些很好的讨论在这里 这是美国国土安全部举行的静态分析会议。

  ask by David translate from so

未解决问题?本站智能推荐: