1

我正在使用 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 框架的标头的信息,我无法更改...

该手册没有描述这样做的选项,谷歌没有帮助,所以还没有答案。

在 cppcheck 问题跟踪器中,我发现了类似的问题#4707(Microsoft 'abstract' and 'sealed' extension for class)—— cppcheck。在这里,主要开发人员建议创建一个文件并(预先?)将其包含到 cppcheck 运行中,但我使用的是 GUI 版本,并且没有包含单个文件的选项。所以我尝试在我的项目选项的 include 部分(一个 XML 文件)中添加一个 director,然后我将相应的行编辑为一个文件规范,但这显然是无稽之谈,因为该部分包含包含路径

接下来我可以尝试什么?

4

1 回答 1

1

一种解决方案是将PACKAGE(为空)的定义添加到项目文件中:

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

这个解决方案我终于在 master · danmar/cppcheck · GitHub的项目 repo cppcheck/gui/projectfile.txt 这个小而有价值的项目文件描述中找到了

于 2014-03-04T11:24:57.717 回答