forked from OSchip/llvm-project
[analyzer] Use the new registration mechanism for the debugging info "checks".
The relative checker package is 'debug': '-dump-live-variables' is replaced by '-analyzer-checker=debug.DumpLiveVars' '-cfg-view' is replaced by '-analyzer-checker=debug.ViewCFG' '-cfg-dump' is replaced by '-analyzer-checker=debug.DumpCFG' llvm-svn: 125780
This commit is contained in:
parent
af45aca670
commit
57d736fd46
|
@ -36,18 +36,12 @@ def triple_EQ : Joined<"-triple=">, Alias<triple>;
|
|||
// Analyzer Options
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
def analysis_CFGDump : Flag<"-cfg-dump">,
|
||||
HelpText<"Display Control-Flow Graphs">;
|
||||
def analysis_CFGView : Flag<"-cfg-view">,
|
||||
HelpText<"View Control-Flow Graphs using GraphViz">;
|
||||
def analysis_UnoptimizedCFG : Flag<"-unoptimized-cfg">,
|
||||
HelpText<"Generate unoptimized CFGs for all analyses">;
|
||||
def analysis_CFGAddImplicitDtors : Flag<"-cfg-add-implicit-dtors">,
|
||||
HelpText<"Add C++ implicit destructors to CFGs for all analyses">;
|
||||
def analysis_CFGAddInitializers : Flag<"-cfg-add-initializers">,
|
||||
HelpText<"Add C++ initializers to CFGs for all analyses">;
|
||||
def analysis_DisplayLiveVariables : Flag<"-dump-live-variables">,
|
||||
HelpText<"Print results of live variable analysis">;
|
||||
def analysis_WarnUninitVals : Flag<"-warn-uninit-values">,
|
||||
HelpText<"Warn about uses of uninitialized variables">;
|
||||
def analysis_ObjCMemChecker : Flag<"-analyzer-check-objc-mem">,
|
||||
|
|
|
@ -15,15 +15,6 @@
|
|||
#define ANALYSIS(NAME, CMDFLAG, DESC, SCOPE)
|
||||
#endif
|
||||
|
||||
ANALYSIS(CFGDump, "cfg-dump",
|
||||
"Display Control-Flow Graphs", Code)
|
||||
|
||||
ANALYSIS(CFGView, "cfg-view",
|
||||
"View Control-Flow Graphs using GraphViz", Code)
|
||||
|
||||
ANALYSIS(DisplayLiveVariables, "dump-live-variables",
|
||||
"Print results of live variable analysis", Code)
|
||||
|
||||
ANALYSIS(WarnUninitVals, "warn-uninit-values",
|
||||
"Warn about uses of uninitialized variables", Code)
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ def UnixExperimental : Package<"experimental">,
|
|||
InPackage<Unix>, Hidden;
|
||||
|
||||
def LLVM : Package<"llvm">;
|
||||
def Debug : Package<"debug">;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Groups.
|
||||
|
@ -107,6 +108,21 @@ def LLVMConventionsChecker : Checker<"Conventions">,
|
|||
HelpText<"Check code for LLVM codebase conventions">,
|
||||
DescFile<"LLVMConventionsChecker.cpp">;
|
||||
|
||||
def LiveVariablesDumper : Checker<"DumpLiveVars">,
|
||||
InPackage<Debug>,
|
||||
HelpText<"Print results of live variable analysis">,
|
||||
DescFile<"DebugCheckers.cpp">;
|
||||
|
||||
def CFGViewer : Checker<"ViewCFG">,
|
||||
InPackage<Debug>,
|
||||
HelpText<"View Control-Flow Graphs using GraphViz">,
|
||||
DescFile<"DebugCheckers.cpp">;
|
||||
|
||||
def CFGDumper : Checker<"DumpCFG">,
|
||||
InPackage<Debug>,
|
||||
HelpText<"Display Control-Flow Graphs">,
|
||||
DescFile<"DebugCheckers.cpp">;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Hidden experimental checkers.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
//==- DebugCheckers.cpp - Debugging Checkers ---------------------*- C++ -*-==//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines a checkers that display debugging information.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "ClangSACheckers.h"
|
||||
#include "clang/StaticAnalyzer/Core/CheckerV2.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
|
||||
#include "clang/Analysis/Analyses/LiveVariables.h"
|
||||
|
||||
using namespace clang;
|
||||
using namespace ento;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// LiveVariablesDumper
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
class LiveVariablesDumper : public CheckerV2<check::ASTCodeBody> {
|
||||
public:
|
||||
void checkASTCodeBody(const Decl *D, AnalysisManager& mgr,
|
||||
BugReporter &BR) const {
|
||||
if (LiveVariables* L = mgr.getLiveVariables(D)) {
|
||||
L->dumpBlockLiveness(mgr.getSourceManager());
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void ento::registerLiveVariablesDumper(CheckerManager &mgr) {
|
||||
mgr.registerChecker<LiveVariablesDumper>();
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// CFGViewer
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
class CFGViewer : public CheckerV2<check::ASTCodeBody> {
|
||||
public:
|
||||
void checkASTCodeBody(const Decl *D, AnalysisManager& mgr,
|
||||
BugReporter &BR) const {
|
||||
if (CFG *cfg = mgr.getCFG(D)) {
|
||||
cfg->viewCFG(mgr.getLangOptions());
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void ento::registerCFGViewer(CheckerManager &mgr) {
|
||||
mgr.registerChecker<CFGViewer>();
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// CFGDumper
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
class CFGDumper : public CheckerV2<check::ASTCodeBody> {
|
||||
public:
|
||||
void checkASTCodeBody(const Decl *D, AnalysisManager& mgr,
|
||||
BugReporter &BR) const {
|
||||
if (CFG *cfg = mgr.getCFG(D)) {
|
||||
cfg->dump(mgr.getLangOptions());
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void ento::registerCFGDumper(CheckerManager &mgr) {
|
||||
mgr.registerChecker<CFGDumper>();
|
||||
}
|
|
@ -407,25 +407,6 @@ static void ActionObjCMemChecker(AnalysisConsumer &C, AnalysisManager& mgr,
|
|||
}
|
||||
}
|
||||
|
||||
static void ActionDisplayLiveVariables(AnalysisConsumer &C,
|
||||
AnalysisManager& mgr, Decl *D) {
|
||||
if (LiveVariables* L = mgr.getLiveVariables(D)) {
|
||||
L->dumpBlockLiveness(mgr.getSourceManager());
|
||||
}
|
||||
}
|
||||
|
||||
static void ActionCFGDump(AnalysisConsumer &C, AnalysisManager& mgr, Decl *D) {
|
||||
if (CFG *cfg = mgr.getCFG(D)) {
|
||||
cfg->dump(mgr.getLangOptions());
|
||||
}
|
||||
}
|
||||
|
||||
static void ActionCFGView(AnalysisConsumer &C, AnalysisManager& mgr, Decl *D) {
|
||||
if (CFG *cfg = mgr.getCFG(D)) {
|
||||
cfg->viewCFG(mgr.getLangOptions());
|
||||
}
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AnalysisConsumer creation.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -analyze -cfg-dump -cfg-add-implicit-dtors %s 2>&1 | FileCheck %s
|
||||
// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -cfg-add-implicit-dtors %s 2>&1 | FileCheck %s
|
||||
// XPASS: *
|
||||
|
||||
class A {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -analyze -cfg-dump -cfg-add-implicit-dtors %s 2>&1 | FileCheck %s
|
||||
// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -cfg-add-implicit-dtors %s 2>&1 | FileCheck %s
|
||||
// XPASS: *
|
||||
|
||||
class A {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -analyze -cfg-dump -cfg-add-initializers %s 2>&1 | FileCheck %s
|
||||
// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -cfg-add-initializers %s 2>&1 | FileCheck %s
|
||||
// XPASS: *
|
||||
|
||||
class A {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -analyze -cfg-dump -cfg-add-implicit-dtors -cfg-add-initializers %s 2>&1 | FileCheck %s
|
||||
// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -cfg-add-implicit-dtors -cfg-add-initializers %s 2>&1 | FileCheck %s
|
||||
// XPASS: *
|
||||
|
||||
class A {
|
||||
|
|
Loading…
Reference in New Issue