From: Csaba Dabis Date: Mon, 24 Jun 2019 16:06:44 +0000 (+0000) Subject: [analyzer] Fix JSON dumps for ExplodedNodes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0a9cba23fc8a58554dccfe601580592d7d65bb85;p=clang [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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@364193 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Core/ExprEngine.cpp b/lib/StaticAnalyzer/Core/ExprEngine.cpp index 2cef99157c..38422eb1b1 100644 --- a/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -3009,7 +3009,7 @@ struct DOTGraphTraits : 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 : public DefaultDOTGraphTraits { Indent(Out, Space, IsDot) << "\"program_state\": null"; } - Out << "\\l}"; - if (!N->succ_empty()) - Out << ','; - Out << "\\l"; - + Out << "\\l}\\l"; return Out.str(); } }; diff --git a/test/Analysis/dump_egraph.c b/test/Analysis/dump_egraph.c index f1ac03b10c..701e985079 100644 --- a/test/Analysis/dump_egraph.c +++ b/test/Analysis/dump_egraph.c @@ -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    \{ \"kind\": \"Edge\", \"src_id\": 2, \"dst_id\": 1, \"terminator\": null, \"term_kind\": null, \"tag\": null \}\l  ],\l  \"program_state\": null // CHECK: \"program_points\": [\l    \{ \"kind\": \"BlockEntrance\", \"block_id\": 1