#5178 Supply DTD/(XSD/RNG for cppcheck XML output. Add target to Makefile to create and validate XML from regular run. Update xmlV2.rng accordingly.

This commit is contained in:
amai2012 2018-05-24 16:12:43 +02:00
parent c07abdd382
commit ceff09d491
3 changed files with 67 additions and 55 deletions

View File

@ -319,10 +319,13 @@ validatePlatforms: ${PlatformFilesCHECKED}
# Validate XML output (to detect regressions)
/tmp/errorlist.xml: cppcheck
cppcheck --errorlist >$@
/tmp/example.xml: cppcheck
cppcheck --xml --inconclusive -j 4 cli externals gui lib test 2>/tmp/example.xml
createXMLExamples:/tmp/errorlist.xml /tmp/example.xml
.PHONY: validateXMLV2
validateXMLV2: /tmp/errorlist.xml
xmllint --noout --relaxng xmlV2.rng $<
validateXMLV2: createXMLExamples
xmllint --noout --relaxng xmlV2.rng /tmp/errorlist.xml
xmllint --noout --relaxng xmlV2.rng /tmp/example.xml
###### Build

View File

@ -417,9 +417,13 @@ int main(int argc, char **argv)
fout << "# Validate XML output (to detect regressions)\n";
fout << "/tmp/errorlist.xml: cppcheck\n";
fout << "\tcppcheck --errorlist >$@\n";
fout << "/tmp/example.xml: cppcheck\n";
fout << "\tcppcheck --xml --inconclusive -j 4 cli externals gui lib test 2>/tmp/example.xml\n";
fout << "createXMLExamples:/tmp/errorlist.xml /tmp/example.xml\n";
fout << ".PHONY: validateXMLV2\n";
fout << "validateXMLV2: /tmp/errorlist.xml\n";
fout << "\txmllint --noout --relaxng xmlV2.rng $<\n\n";
fout << "validateXMLV2: createXMLExamples\n";
fout << "\txmllint --noout --relaxng xmlV2.rng /tmp/errorlist.xml\n";
fout << "\txmllint --noout --relaxng xmlV2.rng /tmp/example.xml\n";
fout << "\n###### Build\n\n";

105
xmlV2.rng Normal file → Executable file
View File

@ -1,50 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<element name="results">
<attribute name="version">
<data type="integer"/>
</attribute>
<element name="cppcheck">
<attribute name="version"/>
</element>
<element name="errors">
<oneOrMore>
<element name="error">
<optional>
<attribute name="cwe">
<data type="integer"/>
</attribute>
</optional>
<attribute name="id">
<data type="NCName"/>
</attribute>
<optional>
<attribute name="inconclusive">
<data type="boolean"/>
</attribute>
</optional>
<attribute name="msg"/>
<attribute name="severity">
<data type="NCName"/>
</attribute>
<attribute name="verbose"/>
<choice>
<element name="location">
<attribute name="file"/>
<attribute name="line">
<data type="integer"/>
</attribute>
</element>
<zeroOrMore>
<element name="symbol">
<data type="string"/>
</element>
</zeroOrMore>
</choice>
</element>
</oneOrMore>
</element>
</element>
</start>
</grammar>
<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<element name="results">
<attribute name="version">
<data type="integer"/>
</attribute>
<element name="cppcheck">
<attribute name="version"/>
</element>
<element name="errors">
<oneOrMore>
<element name="error">
<optional>
<attribute name="cwe">
<data type="integer"/>
</attribute>
</optional>
<attribute name="id">
<data type="NCName"/>
</attribute>
<optional>
<attribute name="inconclusive">
<data type="boolean"/>
</attribute>
</optional>
<attribute name="msg"/>
<attribute name="severity">
<data type="NCName"/>
</attribute>
<attribute name="verbose"/>
<choice>
<zeroOrMore>
<element name="location">
<attribute name="file"/>
<optional>
<attribute name="info"/>
</optional>
<attribute name="line">
<data type="integer"/>
</attribute>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="symbol">
<data type="anyURI"/>
</element>
</zeroOrMore>
</choice>
</element>
</oneOrMore>
</element>
</element>
</start>
</grammar>