我正在使用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。这里的首席开发人员建议创建一个文件并将(pre - ?)包含在cppcheck运行中,但我使用的是GUI版本,并且没有选项可以包含单个文件。所以我尝试将导向器添加到项目选项的包含部分(XML文件),然后我将相应的行编辑为文件规范,但这显然是无稽之谈,因为此部分包含包含路径
我接下来可以尝试什么?
答案 0 :(得分:1)
解决方案是将PACKAGE
(为空)的定义添加到项目文件中:
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<defines>
<define name="PACKAGE=" />
</defines>
</project>
我终于在项目回购cppcheck/gui/projectfile.txt at master · danmar/cppcheck · GitHub
中找到了这个小但有价值的项目文件描述的解决方案