使cppcheck跳过包定义(make cppcheck skip the PACKAGE defi

2019-10-19 11:59发布

我使用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 ,因为它不知道这意味着什么:

代码“类包TAppInfoDialog {”没有被处理。 您可以使用-I或--include添加该代码的处理。

...这当然意味着整个类未选中。 如果我能把cppcheck 简单地忽略PACKAGE “关键字”,它会做完全正确的事情,但怎么办呢? 包括它的原始定义通过包括路径,似乎不是一种选择:然后cppcheck告诉我很多关于 VCL框架我不能改变 ...

本手册没有描述的选项来做到这一点,谷歌并没有帮助,所以没有一个答案。

在cppcheck问题跟踪,我发现类似的问题#4707(微软“抽象”和“密封”扩展类) - cppcheck 。 这里的首席开发人员建议创建一个文件和(预 - ?),它包括对cppcheck跑,但我使用的GUI版本并没有选项包括一个单一的文件。 于是,我就到董事添加到我的项目的选项包括部分(XML文件),然后我编辑的相应行的文件规范,但是这显然废话,因为这部分包含包括路径

我可以尝试下呢?

Answer 1:

一个解决办法是增加的定义PACKAGE (为空)到项目文件:

<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
    <defines>
        <define name="PACKAGE=" />
    </defines>    
</project>

该解决方案我终于在这个项目回购这个小而有价值的项目文件中的描述找到cppcheck / GUI / projectfile.txt在主·danmar / cppcheck·GitHub上



文章来源: make cppcheck skip the PACKAGE definition