make cppcheck跳过PACKAGE定义

时间:2014-03-04 09:55:06

标签: c++ vcl static-code-analysis cppcheck language-extension

我正在使用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文件),然后我将相应的行编辑为文件规范,但这显然是无稽之谈,因为此部分包含包含路径

我接下来可以尝试什么?

1 个答案:

答案 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

中找到了这个小但有价值的项目文件描述的解决方案