为什么CPP Check不显示任何错误?

Maw*_*awg 2 c++ xml static-code-analysis cppcheck

这个

cppcheck --enable=style --inconclusive --check-config --xml --xml-version=2 -v -I.. -I../mocks -I../gmock -I../gtest -DUNIT_TEST ../src
Run Code Online (Sandbox Code Playgroud)

结果

<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
  <cppcheck version="1.52"/>
  <errors>
Checking ../src/AppMain.cpp...
  </errors>
</results>
Run Code Online (Sandbox Code Playgroud)

显然,我做错了-但是呢?

顺便说一句,我确定代码有问题,但是可以肯定的是,我将这两行粘贴到了其中

 char a[10];
 a[10] = 0;
Run Code Online (Sandbox Code Playgroud)

而且没有报告超出范围引用

x29*_*29a 6

没有一个简单的实例来重现该问题,很难提供帮助。

首先,删除check-config参数,因为它执行以下操作

--check-config检查cppcheck配置。正常代码分析被该标志禁用。

知道源代码很重要,因为如果您定义UNIT_TEST,并且由于此原因该特定代码段未处于活动状态,它将不会显示任何问题。

此外,如果您想看到错误,则应指定“ --enable = all”,因为越界被归类为错误而不是样式。但是,未使用的变量(如您的示例中给出的)是一个样式问题。

运行cppcheck(v1.72)

cppcheck --enable=all --inconclusive --xml-version=2 -v foo.cpp
Run Code Online (Sandbox Code Playgroud)

在这个

void main()
{
  char a[10];
  a[10] = 0;
}
Run Code Online (Sandbox Code Playgroud)

为我带来以下输出

<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
    <cppcheck version="1.72"/>
    <errors>
        <error id="unreadVariable" severity="style" msg="Variable &apos;a&apos; is assigned a value that is never used." verbose="Variable &apos;a&apos; is assigned a value that is never used.">
            <location file="foo.cpp" line="5"/>
        </error>
        <error id="arrayIndexOutOfBounds" severity="error" msg="Array &apos;a[10]&apos; accessed at index 10, which is out of bounds." verbose="Array &apos;a[10]&apos; accessed at index 10, which is out of bounds.">
            <location file="foo.cpp" line="5"/>
        </error>
    </errors>
</results>
Run Code Online (Sandbox Code Playgroud)