在CDT之外使用Eclipse CDT解析器

9

是否可以在Eclipse之外使用CDT解析器,离线分析C源代码?


@IraBaxter只是一个开源的C代码分析工具,而我能想到最接近的就是Eclipse CDT(是的,我看过你们的产品了,这差不多是我正在寻找的,但作为概念验证,我想从一个开源项目开始)。 - mikebloch
1
@IraBaxter "GUI中100%无阻塞函数"确实需要进行全面的流程分析,并且在您的产品中某些极端情况下可能是错误的。但是,如果您从带有“gui”名称的函数中调用标记为阻塞的函数(从已知危险函数列表或使用@//nogui注释),则简单的警告仍然非常有用,并且不需要全面的分析。我不明白为什么您将其视为“全有或全无”的情况,许多产品提供启发式分析(请参见viva64),并且非常有用。 - mikebloch
1
不要认为我们的流分析是“错误”的;它肯定是“保守的”,以避免图灵陷阱;是的,这会导致假阳性。我不认为这是非此即彼的问题;我认为任何严肃的分析都会解析并至少进行一些弱数据流尝试(Viva64就是这样做的)。最终回报与您对分析的野心和接受不完全正确答案的意愿程度有关(对于我们的产品也是如此),同意吗?祝你好运。 - Ira Baxter
1
我看了Viva64...声称基于VivaCore,后者没有任何流分析。也许他们已经加入了,也可能没有。我认为CFG比你想象的要难;对于仅使用C,您必须仔细考虑序列点、转到、SETJMP、汇编包含等问题。对于C ++,您需要涵盖隐式转换、构造函数、析构函数(这些规则令人惊讶地复杂)、异常处理和重载。如果您认为这些不那么难,我向您致敬,这对我们来说已经够难了。我认为您的观点是您不必拥有所有价值。我同意... - Ira Baxter
1
请注意,如果您的分析不是基于精确的语义(例如“启发式”),则诊断结果将会更加不可靠。如果这对您有用,那太好了。在静态分析工具业务中的一般经验是,随着误报率的上升,工具的接受度会迅速下降。只需要浪费程序员的时间一次,他就会对您感到生气。 - Ira Baxter
显示剩余11条评论
4个回答

1

是的,这是可能的。

我在一个名为CPAchecker的项目中工作,它正是做这件事情的。


1

0

根据您的具体情况,您可以看一下 Eclim 及其实现。它运行一个无头 Eclipse,并使用 vim 编辑器连接到它。显然它还支持其他前端。C/C++ 项目似乎也得到了支持:http://eclim.org/vim/c/project.html

否则,我会跟随 @Dodon Victor 的建议,推荐 clang/llvm。


0

你可以将Eclipse CDT解析器设置为服务。然后,你可以将你的C代码传递给它并进行代码分析。我做过类似的事情,只不过我使用的是JDT。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接