[analyzer] Fix JSON dumps for ExplodedNodes

Summary:
- Now we could see the `has_report` property in `trim-egraph` mode.
- This patch also removes the trailing comma after each node.

Reviewers: NoQ

Reviewed By: NoQ

Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin,
             mikhail.ramalho, Szelethus, donat.nagy, dkrupp, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D63436

llvm-svn: 364193
This commit is contained in:
Csaba Dabis 2019-06-24 16:06:44 +00:00
parent e3a676e9ad
commit 906d494b6e
2 changed files with 10 additions and 10 deletions

View File

@ -3009,7 +3009,7 @@ struct DOTGraphTraits<ExplodedGraph*> : public DefaultDOTGraphTraits {
for (const auto &EQ : EQClasses) {
for (const BugReport &Report : EQ) {
if (Report.getErrorNode() == N)
if (Report.getErrorNode()->getState() == N->getState())
return true;
}
}
@ -3109,11 +3109,7 @@ struct DOTGraphTraits<ExplodedGraph*> : public DefaultDOTGraphTraits {
Indent(Out, Space, IsDot) << "\"program_state\": null";
}
Out << "\\l}";
if (!N->succ_empty())
Out << ',';
Out << "\\l";
Out << "\\l}\\l";
return Out.str();
}
};

View File

@ -1,6 +1,12 @@
// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-dump-egraph=%t.dot %s
// RUN: %clang_analyze_cc1 -analyzer-checker=core \
// RUN: -analyzer-dump-egraph=%t.dot %s
// RUN: cat %t.dot | FileCheck %s
// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-dump-egraph=%t.dot -trim-egraph %s
// RUN: %clang_analyze_cc1 -analyzer-checker=core \
// RUN: -analyzer-dump-egraph=%t.dot \
// RUN: -trim-egraph %s
// RUN: cat %t.dot | FileCheck %s
// REQUIRES: asserts
int getJ();
@ -10,8 +16,6 @@ int foo() {
return *x + *y;
}
// CHECK: digraph "Exploded Graph" {
// CHECK: \"program_points\": [\l&nbsp;&nbsp;&nbsp;&nbsp;\{ \"kind\": \"Edge\", \"src_id\": 2, \"dst_id\": 1, \"terminator\": null, \"term_kind\": null, \"tag\": null \}\l&nbsp;&nbsp;],\l&nbsp;&nbsp;\"program_state\": null
// CHECK: \"program_points\": [\l&nbsp;&nbsp;&nbsp;&nbsp;\{ \"kind\": \"BlockEntrance\", \"block_id\": 1