【问题标题】:cppcheck generates wrong xml structurecppcheck 生成错误的 xml 结构
【发布时间】:2020-07-01 13:59:35
【问题描述】:

我正在尝试从 cppcheck 的输出中解析 XML 数据。但是 XML 结构似乎有问题。

cppcheck src --enable=warning,style,unusedFunction --xml --inconclusive --std=posix --std=c++11 2> error_s.xml

cppcheck XML 输出:

<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
    <cppcheck version="1.82"/>
    <errors>
        <error id="funcArgNamesDifferent" severity="style" msg="Blah Blah bLah." verbose="Blah Blah Verbose" cwe="628" inconclusive="true">
            <location file="src/DataLayer/ABC.cpp" line="329"/>
            <location file0="src/DataLayer/ABC.cpp" file="src/DataLayer/ABC.h" line="64"/>
            <location file0="src/DataLayer/ABC.cpp" file="src/DataLayer/ABC.h" line="64"/>
            <location file0="src/DataLayer/ABC.cpp" file="src/DataLayer/ABC.h" line="64"/>
        </error>
</errors>
</results>

location 节点不应该在像locations 这样的数组中吗?

        <locations>
            <location file="src/DataLayer/ABC.cpp" line="329"/>
            <location file0="src/DataLayer/ABC.cpp" file="src/DataLayer/ABC.h" line="64"/>
        </locations>

【问题讨论】:

  • 我用几个在线 XML 验证器测试了你发布的 XML,他们都说没问题。
  • 是的,因为它检查基本验证...但是您如何获得第二个位置节点的值..?例如:在 php 中,如果我执行 $cpp_error['location'] -> 它指向第一个位置,那么它会产生警告。
  • @Hahn 你试过$cpp_error['location'][2] 吗?我认为不需要locations 数组。访问该locations 数组中的第二个location 也会遇到同样的问题。您需要类似:stackoverflow.com/questions/4007413/…

标签: c++ c static-code-analysis cppcheck


【解决方案1】:

不幸的是,如果不写太多的 if 语句,它就无法访问..

if(isset($location)){

}

Conversation with CppChecker Developer..希望在他们发布 v3 时它会得到修复

目前,唯一的访问方法是使用过多的 if 语句。

如果没有,还有库 htmlreport 会生成 html 页面..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多