我需要一个分析C ++源代码的工具,并说明未使用的代码。源的大小约为500mb

有帮助吗?

解决方案

PC-Lint很好。如果需要免费/开源,你的选择会减少。 Cppcheck是免费的,将检查未使用的私人功能。我认为它不像PC-Lint那样寻找未实例化的类。

其他提示

我再次将 AQTime 投入讨论。对大多数(如果不是全部)支持的语言进行静态代码分析。我没有真正进入那个部分,我主要使用动态分析器(内存,性能等)。

您可以使用代码覆盖率工具(动态分析)来了解哪些代码不是 正在执行,然后手工分析以查看该代码是否真的无用。

如果您想进行静态分析,则需要一个可以读取整个分析的工具 500Mb的源代码(估计2000万行?哇!)并计算一个 保守估计使用的是什么。这需要做一个指向 分析整个系统。

原因如下:如果你遗漏任何模块Z,和 决定FOO未被使用,你 后来可能会发现Z恰好是使用FOO的那个, 或者更巧妙地,Z复制了碰巧有的指针值 & FOO在其中,第三模块M又称为“未使用”的模块。功能 通过指针。

这意味着没有只读的静态分析工具 单个模块(编译单元)可以安全地回答这个问题。 按照你的规模,你不能犯下愚蠢的错误。

我的公司Semantic Designs已经为3500万个线路系统进行了分析 使用我们的DMS软件再造工具包进行C代码。 DMS 可以读取非常大的源代码系统。它需要 一个自定义工具,而不是因为源代码是奇怪的(archiac) C ++的方言(极端现代方言中的系统不能这么大, 没有足够的时间对它们进行编码!),而是因为在非常大的系统中 还有其他特殊因素在起作用。对于我们做的C系统, 有一个自定义动态链接器,它影响了分析点, 这反过来又必须定制。

因为您正在讨论的规模系统总是有这样的惊喜(BIBSEH:“因为在大系统中,一切都发生了”),你将 可能需要一个自定义工具来回答这个问题。 DMS是专门设计的 要定制。 请参阅 http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html http://www.semanticdesigns.com/Products/FrontEnds/CppFrontEnd.html

代码覆盖率工具是您所需要的,但您必须通过所有功能运行我们的程序,并查看重新设置为未使用的内容。由于代码可能是DLL导出函数,因此您必须确保没有任何外部使用它们。一些代码覆盖工具:Purify,CTC ++,Boundschecker可能具有代码覆盖功能,如果我没记错的话还有其他一些工具。

在不知道外部程序可能链接/使用它的情况下,要非常小心地删除可能已导出的任何功能。

scroll top