在CDT之外使用Eclipse CDT解析器

在CDT之外使用Eclipse CDT解析器,c,eclipse,parsing,eclipse-cdt,C,Eclipse,Parsing,Eclipse Cdt,是否可以在Eclipse之外使用Eclipse的CDT解析器来离线分析C源代码?如果您没有使用Eclipse CDT的限制,我建议您使用clang/llvm。这是一个相当年轻的编译器和代码分析器,但它具有良好的性能 [1] [2] 您可以将eclipse CDT解析器设置为服务。然后您可以将C代码传递给它,并对代码进行分析。我也做过类似的事情,除了我使用jdt。根据您的具体场景,您可以查看Eclim和/或其实现。它运行一个无头eclipse并使用vim编辑器连接到它。显然,它还支持其他前端。C/

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

如果您没有使用Eclipse CDT的限制,我建议您使用clang/llvm。这是一个相当年轻的编译器和代码分析器,但它具有良好的性能

[1]
[2]

您可以将eclipse CDT解析器设置为服务。然后您可以将C代码传递给它,并对代码进行分析。我也做过类似的事情,除了我使用jdt。

根据您的具体场景,您可以查看Eclim和/或其实现。它运行一个无头eclipse并使用vim编辑器连接到它。显然,它还支持其他前端。C/C++项目似乎得到了支持:

否则,我会选择@Dodon Victor并推荐clang/llvm。

是的,这是可能的


我在一个名为which的项目中工作,该项目正是这样做的。

您是在寻找C代码分析包,还是特别想使用CDT?@IraBaxter“GUI中100%无阻塞函数”确实需要全面的流分析,在您的产品中的某些极端情况下可能也是错误的。但是,如果您从名称中带有“gui”的函数调用标记为阻塞的函数(从已知危险函数列表中,或在注释中带有
@//nogui
),那么一个简单的警告仍然非常有用,并且不需要进行全面的分析。我不明白你为什么把它当作“全有或全无”的情况,许多产品都给出了启发式分析(见viva64),并且非常有用;避免图灵陷阱肯定是保守的;是的,这会导致误报。我不认为这是全部或什么都没有;我确实认为,任何严肃的分析都会解析数据流,并且至少会对数据流进行一些微弱的尝试(Viva64就是这样做的)。最终,回报与你的分析雄心和你接受不太正确答案的意愿程度有关(对我们的产品也是如此),同意。祝你好运我看着Viva64。。。声称基于VivaCore,它没有任何流量分析。也许是他们加上去的;也许不是。我认为CFG比你想象的更难做到;对于C,您必须仔细考虑序列点、GOTOS、SETJMP、汇编包含等。对于C++,需要覆盖隐式转换、构造函数、析构函数(这些规则是令人惊讶的复杂)、异常处理和重载。如果你认为这些都没那么难,我向你致敬,这对我们来说已经够难了。我认为你的观点是,你不必为了获得价值而拥有一切。我同意。。。。。。附带条件是,如果您的分析不基于精确的语义(例如“huerisitic”),那么您的诊断就不那么可信了。如果这对你有用,那太好了。静态分析工具业务的一般经验是,随着误报率的上升,工具接受度会迅速下降。你只要浪费一次程序员的时间就可以让他生你的气。