Skip to content

Commit 2c47266

Browse files
committed
json: propagate per-checker language attribute
1 parent d7e54a5 commit 2c47266

7 files changed

+47254
-1
lines changed

defect.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ struct Defect {
9292
int cwe; ///< CWE number, 0 means unused
9393
int defectId; ///< used only by the JSON format
9494
std::string function; ///< used only by the JSON format
95+
std::string language; ///< used only by the JSON format
9596

9697
Defect():
9798
keyEventIdx(0U),

json-parser.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ void SimpleTreeDecoder::readNode(
249249
def->defectId = valueOf<int> (defNode, "defect_id", 0);
250250
def->cwe = valueOf<int> (defNode, "cwe" , 0);
251251
def->function = valueOf<std::string>(defNode, "function", "");
252+
def->language = valueOf<std::string>(defNode, "language", "");
252253

253254
if (defNode.not_found() == defNode.find("key_event_idx")) {
254255
// key event not specified, try to guess it
@@ -281,9 +282,9 @@ void CovTreeDecoder::readNode(
281282
(*def) = Defect();
282283

283284
// read per-defect properties
284-
// TODO: read/propagate more properties from the Coverity JSON format
285285
def->checker = defNode.get<std::string>("checkerName");
286286
def->function = valueOf<std::string>(defNode, "functionDisplayName", "");
287+
def->language = valueOf<std::string>(defNode, "code-language", "");
287288

288289
// read CWE if available
289290
const pt::ptree *checkerProps;

json-writer.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ void appendDefectNode(PTree &dst, const Defect &def) {
9494
defNode.put<int>("cwe", def.cwe);
9595
if (!def.function.empty())
9696
defNode.put<string>("function", def.function);
97+
if (!def.language.empty())
98+
defNode.put<string>("language", def.language);
9799

98100
defNode.put<int>("key_event_idx", def.keyEventIdx);
99101
defNode.put_child("events", evtList);

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ test_csgrep(csgrep "57-gcc-parser-gcc-analyzer-curl")
177177
test_csgrep(csgrep "58-csparser-gcc-analyzer-curl")
178178
test_csgrep(csgrep "59-json-parser-cov-v7-cwe" )
179179
test_csgrep(csgrep "60-gcc-parser-cppcheck-cwe" )
180+
test_csgrep(csgrep "61-json-parser-cov-v7-lang" )
180181
test_csparser(csparser-5.8 00)
181182
test_csparser(csparser-5.8 01)
182183
test_csparser(csparser-5.8 02)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--mode=json

0 commit comments

Comments
 (0)