【发布时间】:2014-04-05 18:47:36
【问题描述】:
我正在使用 cppcheck 1.64 的 GUI 版本对 C++-Builde-6 代码进行静态代码分析。对于 DLL 导出和导入,PACKAGE 的定义是必要的:
/// A dialog exported from a BPL (a VCL-specific kind of DLL)
class PACKAGE MySharedDialog {
public:
// lots of methods to-be checked
private:
// lots of methods to-be checked
// lots of members
};
Cppcheck 在遇到PACKAGE 时停止,因为它不知道它的含义:
未处理代码“class PACKAGE TAppInfoDialog {”。您可以使用 -I 或 --include 来添加对此代码的处理。
...这当然意味着不检查整个班级。如果我可以让 cppcheck 简单地忽略 PACKAGE“关键字”,它会完全做正确的事情,但是该怎么做呢?通过包含路径包含其原始定义似乎不是一个选项:cppcheck 然后告诉我很多关于 VCL 框架的标头我无法更改...
The manual 没有描述这样做的选项,谷歌没有帮助,所以还没有答案。
在 cppcheck 问题跟踪器中,我发现了类似的问题#4707 (Microsoft 'abstract' and 'sealed' extension for class) – cppcheck。在这里,主要开发人员建议创建一个文件并(预先?)将其包含到 cppcheck 运行中,但我使用的是 GUI 版本,并且没有包含单个文件的选项。所以我尝试在我的项目选项(一个 XML 文件)的包含部分添加一个导向器,然后我将相应的行编辑为文件规范,但这显然是无稽之谈,因为该部分包含 包含路径 .
接下来我可以尝试什么?
【问题讨论】:
-
它是开源的,大家都在等待你的补丁。
-
@HansPassant :) 我希望这只是一个玩笑,并且已经有了一个选项。例如,使用 cppcheck 正在运行的定义?
标签: c++ vcl static-code-analysis cppcheck language-extension