[PATCH] D51655: [analyzer] Remove traces of ubigraph visualization

2018-09-06 Thread George Karpenkov via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL341601: [analyzer] Remove traces of ubigraph visualization 
(authored by george.karpenkov, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D51655?vs=163895&id=164311#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D51655

Files:
  cfe/trunk/include/clang/Driver/CC1Options.td
  cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
  cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
  cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
  cfe/trunk/lib/Frontend/CompilerInvocation.cpp
  cfe/trunk/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
  cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
  cfe/trunk/test/Analysis/ubigraph-viz.cpp
  cfe/trunk/tools/scan-build-py/libscanbuild/analyze.py
  cfe/trunk/tools/scan-build/libexec/ccc-analyzer
  cfe/trunk/utils/analyzer/ubiviz

Index: cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
===
--- cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
@@ -50,8 +50,6 @@
 
 #define DEBUG_TYPE "AnalysisConsumer"
 
-static std::unique_ptr CreateUbiViz();
-
 STATISTIC(NumFunctionTopLevel, "The # of functions at top level.");
 STATISTIC(NumFunctionsAnalyzed,
   "The # of functions and blocks analyzed (as top level "
@@ -743,21 +741,10 @@
   ExprEngine Eng(CTU, *Mgr, ObjCGCEnabled, VisitedCallees, &FunctionSummaries,
  IMode);
 
-  // Set the graph auditor.
-  std::unique_ptr Auditor;
-  if (Mgr->options.visualizeExplodedGraphWithUbiGraph) {
-Auditor = CreateUbiViz();
-ExplodedNode::SetAuditor(Auditor.get());
-  }
-
   // Execute the worklist algorithm.
   Eng.ExecuteWorkList(Mgr->getAnalysisDeclContextManager().getStackFrame(D),
   Mgr->options.getMaxNodesPerTopLevelFunction());
 
-  // Release the auditor (if any) so that it doesn't monitor the graph
-  // created BugReporter.
-  ExplodedNode::SetAuditor(nullptr);
-
   // Visualize the exploded graph.
   if (Mgr->options.visualizeExplodedGraphWithGraphViz)
 Eng.ViewGraph(Mgr->options.TrimGraph);
@@ -803,98 +790,3 @@
   CI.getFrontendOpts().Plugins,
   hasModelPath ? new ModelInjector(CI) : nullptr);
 }
-
-//===--===//
-// Ubigraph Visualization.  FIXME: Move to separate file.
-//===--===//
-
-namespace {
-
-class UbigraphViz : public ExplodedNode::Auditor {
-  std::unique_ptr Out;
-  std::string Filename;
-  unsigned Cntr;
-
-  typedef llvm::DenseMap VMap;
-  VMap M;
-
-public:
-  UbigraphViz(std::unique_ptr Out, StringRef Filename);
-
-  ~UbigraphViz() override;
-
-  void AddEdge(ExplodedNode *Src, ExplodedNode *Dst) override;
-};
-
-} // end anonymous namespace
-
-static std::unique_ptr CreateUbiViz() {
-  SmallString<128> P;
-  int FD;
-  llvm::sys::fs::createTemporaryFile("llvm_ubi", "", FD, P);
-  llvm::errs() << "Writing '" << P << "'.\n";
-
-  auto Stream = llvm::make_unique(FD, true);
-
-  return llvm::make_unique(std::move(Stream), P);
-}
-
-void UbigraphViz::AddEdge(ExplodedNode *Src, ExplodedNode *Dst) {
-
-  assert (Src != Dst && "Self-edges are not allowed.");
-
-  // Lookup the Src.  If it is a new node, it's a root.
-  VMap::iterator SrcI= M.find(Src);
-  unsigned SrcID;
-
-  if (SrcI == M.end()) {
-M[Src] = SrcID = Cntr++;
-*Out << "('vertex', " << SrcID << ", ('color','#00ff00'))\n";
-  }
-  else
-SrcID = SrcI->second;
-
-  // Lookup the Dst.
-  VMap::iterator DstI= M.find(Dst);
-  unsigned DstID;
-
-  if (DstI == M.end()) {
-M[Dst] = DstID = Cntr++;
-*Out << "('vertex', " << DstID << ")\n";
-  }
-  else {
-// We have hit DstID before.  Change its style to reflect a cache hit.
-DstID = DstI->second;
-*Out << "('change_vertex_style', " << DstID << ", 1)\n";
-  }
-
-  // Add the edge.
-  *Out << "('edge', " << SrcID << ", " << DstID
-   << ", ('arrow','true'), ('oriented', 'true'))\n";
-}
-
-UbigraphViz::UbigraphViz(std::unique_ptr OutStream,
- StringRef Filename)
-: Out(std::move(OutStream)), Filename(Filename), Cntr(0) {
-
-  *Out << "('vertex_style_attribute', 0, ('shape', 'icosahedron'))\n";
-  *Out << "('vertex_style', 1, 0, ('shape', 'sphere'), ('color', '#ffcc66'),"
-  " ('size', '1.5'))\n";
-}
-
-UbigraphViz::~UbigraphViz() {
-  Out.reset();
-  llvm::errs() << "Running 'ubiviz' program... ";
-  std::string ErrMsg;
-  std::string Ubiviz;
-  if (auto Path = llvm::sys::findProgramByName("ubiviz"))
-Ubiviz = *Path;
-  std::array Args{{Ubiviz, Filename}};
-
-  if (llvm::sys::ExecuteAndWait(Ubiviz, Args, llvm::None, {}, 0, 0, &ErrMsg)) {
-llvm::errs() << "Error viewing

[PATCH] D51655: [analyzer] Remove traces of ubigraph visualization

2018-09-05 Thread Artem Dergachev via Phabricator via cfe-commits
NoQ accepted this revision.
NoQ added a comment.
This revision is now accepted and ready to land.

I actually thought it's just a different name for graphviz :/

I've definitely never heard of anybody using ubigraph for this purpose. And 
it's an analyzer-specific feature. Let's remove.


https://reviews.llvm.org/D51655



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D51655: [analyzer] Remove traces of ubigraph visualization

2018-09-04 Thread George Karpenkov via Phabricator via cfe-commits
george.karpenkov created this revision.
george.karpenkov added reviewers: dcoughlin, NoQ.
Herald added subscribers: Szelethus, mikhail.ramalho, a.sidorin, szepet, 
baloghadamsoftware, xazax.hun, whisperity.

Ubigraph project has been dead since about 2008, and to the best of my 
knowledge, no one was using it.
Previously, I wasn't able to launch the existing binary at all.


https://reviews.llvm.org/D51655

Files:
  clang/include/clang/Driver/CC1Options.td
  clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
  clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
  clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
  clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
  clang/test/Analysis/ubigraph-viz.cpp
  clang/tools/scan-build-py/libscanbuild/analyze.py
  clang/tools/scan-build/libexec/ccc-analyzer
  clang/utils/analyzer/ubiviz

Index: clang/utils/analyzer/ubiviz
===
--- clang/utils/analyzer/ubiviz
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-#
-# The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-##======##
-#
-# This script reads visualization data emitted by the static analyzer for
-# display in Ubigraph.
-#
-##======##
-
-import xmlrpclib
-import sys
-
-
-def Error(message):
-print >> sys.stderr, 'ubiviz: ' + message
-sys.exit(1)
-
-
-def StreamData(filename):
-file = open(filename)
-for ln in file:
-yield eval(ln)
-file.close()
-
-
-def Display(G, data):
-action = data[0]
-if action == 'vertex':
-vertex = data[1]
-G.new_vertex_w_id(vertex)
-for attribute in data[2:]:
-G.set_vertex_attribute(vertex, attribute[0], attribute[1])
-elif action == 'edge':
-src = data[1]
-dst = data[2]
-edge = G.new_edge(src, dst)
-for attribute in data[3:]:
-G.set_edge_attribute(edge, attribute[0], attribute[1])
-elif action == "vertex_style":
-style_id = data[1]
-parent_id = data[2]
-G.new_vertex_style_w_id(style_id, parent_id)
-for attribute in data[3:]:
-G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
-elif action == "vertex_style_attribute":
-style_id = data[1]
-for attribute in data[2:]:
-G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
-elif action == "change_vertex_style":
-vertex_id = data[1]
-style_id = data[2]
-G.change_vertex_style(vertex_id, style_id)
-
-
-def main(args):
-if len(args) == 0:
-Error('no input files')
-
-server = xmlrpclib.Server('http://127.0.0.1:20738/RPC2')
-G = server.ubigraph
-
-for arg in args:
-G.clear()
-for x in StreamData(arg):
-Display(G, x)
-
-sys.exit(0)
-
-
-if __name__ == '__main__':
-main(sys.argv[1:])
Index: clang/tools/scan-build/libexec/ccc-analyzer
===
--- clang/tools/scan-build/libexec/ccc-analyzer
+++ clang/tools/scan-build/libexec/ccc-analyzer
@@ -243,11 +243,6 @@
   push @Args, "-Xclang", $arg;
 }
 
-# Display Ubiviz graph?
-if (defined $ENV{'CCC_UBI'}) {
-  push @Args, "-Xclang", "-analyzer-viz-egraph-ubigraph";
-}
-
 if (defined $AnalyzerTarget) {
   push @Args, "-target", $AnalyzerTarget;
 }
Index: clang/tools/scan-build-py/libscanbuild/analyze.py
===
--- clang/tools/scan-build-py/libscanbuild/analyze.py
+++ clang/tools/scan-build-py/libscanbuild/analyze.py
@@ -395,8 +395,6 @@
 if args.disable_checker:
 checkers = ','.join(args.disable_checker)
 result.extend(['-analyzer-disable-checker', checkers])
-if os.getenv('UBIVIZ'):
-result.append('-analyzer-viz-egraph-ubigraph')
 
 return prefix_with('-Xclang', result)
 
Index: clang/test/Analysis/ubigraph-viz.cpp
===
--- clang/test/Analysis/ubigraph-viz.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.API -analyzer-viz-egraph-ubigraph -verify %s
-// expected-no-diagnostics
-
-int f(int x) {
-  return x < 0 ? 0 : 42;
-}
-
Index: clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
===
--- clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
+++ clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
@@ -50,8 +50,6 @@
 
 #define DEBUG_TYPE "AnalysisConsumer"
 
-static std::uniq