Provide an "Analysis Scope" for Analyses so checks can either be run on code declarations (bodies) or Objective-C @implementation blocks.

llvm-svn: 53584
This commit is contained in:
Ted Kremenek 2008-07-15 00:46:02 +00:00
parent 7688bed4ff
commit fd7efdf20d
5 changed files with 16 additions and 14 deletions

View File

@ -12,30 +12,32 @@
//===----------------------------------------------------------------------===//
ANALYSIS(CFGDump, "cfg-dump",
"Display Control-Flow Graphs")
"Display Control-Flow Graphs", Code)
ANALYSIS(CFGView, "cfg-view",
"View Control-Flow Graphs using GraphViz")
"View Control-Flow Graphs using GraphViz", Code)
ANALYSIS(DisplayLiveVariables, "dump-live-variables",
"Print results of live variable analysis")
"Print results of live variable analysis", Code)
ANALYSIS(WarnDeadStores, "warn-dead-stores",
"Warn about stores to dead variables")
"Warn about stores to dead variables", Code)
ANALYSIS(WarnUninitVals, "warn-uninit-values",
"Warn about uses of uninitialized variables")
"Warn about uses of uninitialized variables", Code)
ANALYSIS(WarnObjCMethSigs, "warn-objc-methodsigs",
"Warn about Objective-C method signatures with type incompatibilities")
"Warn about Objective-C method signatures with type incompatibilities",
ObjCImplementation)
ANALYSIS(WarnObjCDealloc, "warn-objc-missing-dealloc",
"Warn about Objective-C classes that lack a correct implementation of -dealloc")
"Warn about Objective-C classes that lack a correct implementation of -dealloc",
ObjCImplementation)
ANALYSIS(CheckerSimple, "checker-simple",
"Perform simple path-sensitive checks.")
"Perform simple path-sensitive checks.", Code)
ANALYSIS(CheckerCFRef, "checker-cfref",
"Run the [Core] Foundation reference count checker")
"Run the [Core] Foundation reference count checker", Code)
#undef ANALYSIS

View File

@ -414,9 +414,9 @@ ASTConsumer* clang::CreateAnalysisConsumer(Analyses* Beg, Analyses* End,
for ( ; Beg != End ; ++Beg)
switch (*Beg) {
#define ANALYSIS(NAME, CMD, DESC)\
#define ANALYSIS(NAME, CMD, DESC, SCOPE)\
case NAME:\
C->addCodeAction(&Action ## NAME);\
C->add ## SCOPE ## Action(&Action ## NAME);\
break;
#include "Analyses.def"
default: break;

View File

@ -17,7 +17,7 @@
namespace clang {
enum Analyses {
#define ANALYSIS(NAME, CMDFLAG, DESC) NAME,
#define ANALYSIS(NAME, CMDFLAG, DESC, SCOPE) NAME,
#include "Analyses.def"
NumAnalyses
};

View File

@ -162,7 +162,7 @@ AnalyzeAll("checker-opt-analyze-headers",
static llvm::cl::list<Analyses>
AnalysisList(llvm::cl::desc("Available Source Code Analyses:"),
llvm::cl::values(
#define ANALYSIS(NAME, CMDFLAG, DESC)\
#define ANALYSIS(NAME, CMDFLAG, DESC, SCOPE)\
clEnumValN(NAME, CMDFLAG, DESC),
#include "Analyses.def"
clEnumValEnd));

View File

@ -1,4 +1,4 @@
// RUN: clang -check-objc-methodsigs -verify %s
// RUN: clang -warn-objc-methodsigs -verify %s
#include <stdio.h>