[cfe-commits] r49675 - in /cfe/trunk/Driver: ASTConsumers.cpp ASTConsumers.h clang.cpp
Ted Kremenek
kremenek at apple.com
Mon Apr 14 11:40:59 PDT 2008
Author: kremenek
Date: Mon Apr 14 13:40:58 2008
New Revision: 49675
URL: http://llvm.org/viewvc/llvm-project?rev=49675&view=rev
Log:
Added driver option "-checker-opt-analyze-headers" to force the static
analyzer to analyze functions declared in header files.
Modified:
cfe/trunk/Driver/ASTConsumers.cpp
cfe/trunk/Driver/ASTConsumers.h
cfe/trunk/Driver/clang.cpp
Modified: cfe/trunk/Driver/ASTConsumers.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/ASTConsumers.cpp?rev=49675&r1=49674&r2=49675&view=diff
==============================================================================
--- cfe/trunk/Driver/ASTConsumers.cpp (original)
+++ cfe/trunk/Driver/ASTConsumers.cpp Mon Apr 14 13:40:58 2008
@@ -643,12 +643,13 @@
bool Visualize;
bool TrimGraph;
llvm::OwningPtr<PathDiagnosticClient> PD;
+ bool AnalyzeAll;
public:
CheckerConsumer(Diagnostic &diags, const std::string& fname,
const std::string& htmldir,
- bool visualize, bool trim)
+ bool visualize, bool trim, bool analyzeAll)
: CFGVisitor(fname), Diags(diags), HTMLDir(htmldir),
- Visualize(visualize), TrimGraph(trim) {}
+ Visualize(visualize), TrimGraph(trim), AnalyzeAll(analyzeAll) {}
virtual void Initialize(ASTContext &Context) { Ctx = &Context; }
virtual void VisitCFG(CFG& C, Decl&);
@@ -666,8 +667,10 @@
SourceLocation Loc = CD.getLocation();
- if (!Loc.isFileID() ||
- Loc.getFileID() != Ctx->getSourceManager().getMainFileID())
+ if (!Loc.isFileID())
+ return;
+
+ if (!AnalyzeAll && Loc.getFileID() != Ctx->getSourceManager().getMainFileID())
return;
// Lazily create the diagnostic client.
@@ -721,8 +724,8 @@
public:
GRSimpleValsVisitor(Diagnostic &diags, const std::string& fname,
const std::string& htmldir,
- bool visualize, bool trim)
- : CheckerConsumer(diags, fname, htmldir, visualize, trim) {}
+ bool visualize, bool trim, bool analyzeAll)
+ : CheckerConsumer(diags, fname, htmldir, visualize, trim, analyzeAll) {}
virtual const char* getCheckerName() { return "GRSimpleVals"; }
@@ -735,10 +738,11 @@
ASTConsumer* clang::CreateGRSimpleVals(Diagnostic &Diags,
const std::string& FunctionName,
const std::string& HTMLDir,
- bool Visualize, bool TrimGraph) {
+ bool Visualize, bool TrimGraph,
+ bool AnalyzeAll) {
return new GRSimpleValsVisitor(Diags, FunctionName, HTMLDir,
- Visualize, TrimGraph);
+ Visualize, TrimGraph, AnalyzeAll);
}
@@ -750,8 +754,8 @@
public:
CFRefCountCheckerVisitor(Diagnostic &diags, const std::string& fname,
const std::string& htmldir,
- bool visualize, bool trim)
- : CheckerConsumer(diags, fname, htmldir, visualize, trim) {}
+ bool visualize, bool trim, bool analyzeAll)
+ : CheckerConsumer(diags, fname, htmldir, visualize, trim, analyzeAll) {}
virtual const char* getCheckerName() { return "CFRefCountChecker"; }
@@ -764,10 +768,11 @@
ASTConsumer* clang::CreateCFRefChecker(Diagnostic &Diags,
const std::string& FunctionName,
const std::string& HTMLDir,
- bool Visualize, bool TrimGraph) {
+ bool Visualize, bool TrimGraph,
+ bool AnalyzeAll) {
return new CFRefCountCheckerVisitor(Diags, FunctionName, HTMLDir,
- Visualize, TrimGraph);
+ Visualize, TrimGraph, AnalyzeAll);
}
//===----------------------------------------------------------------------===//
Modified: cfe/trunk/Driver/ASTConsumers.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/ASTConsumers.h?rev=49675&r1=49674&r2=49675&view=diff
==============================================================================
--- cfe/trunk/Driver/ASTConsumers.h (original)
+++ cfe/trunk/Driver/ASTConsumers.h Mon Apr 14 13:40:58 2008
@@ -44,13 +44,13 @@
ASTConsumer *CreateGRSimpleVals(Diagnostic &Diags,
const std::string& Function,
- const std::string& HTMLDir,
- bool Visualize = false, bool TrimGraph = false);
+ const std::string& HTMLDir, bool Visualize,
+ bool TrimGraph, bool AnalyzeAll);
ASTConsumer *CreateCFRefChecker(Diagnostic &Diags,
const std::string& Function,
- const std::string& HTMLDir,
- bool Visualize = false, bool TrimGraph = false);
+ const std::string& HTMLDir, bool Visualize,
+ bool TrimGraph, bool AnalyzeAll);
ASTConsumer *CreateCodeRewriterTest(const std::string& InFile,
const std::string& OutFile,
Modified: cfe/trunk/Driver/clang.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.cpp?rev=49675&r1=49674&r2=49675&view=diff
==============================================================================
--- cfe/trunk/Driver/clang.cpp (original)
+++ cfe/trunk/Driver/clang.cpp Mon Apr 14 13:40:58 2008
@@ -146,21 +146,34 @@
OutputFile("o",
llvm::cl::value_desc("path"),
llvm::cl::desc("Specify output file (for --serialize, this is a directory)"));
-
+
+//===----------------------------------------------------------------------===//
+// Diagnostic Options
+//===----------------------------------------------------------------------===//
+
static llvm::cl::opt<bool>
VerifyDiagnostics("verify",
llvm::cl::desc("Verify emitted diagnostics and warnings."));
-static llvm::cl::opt<bool>
-VisualizeEG("visualize-egraph",
- llvm::cl::desc("Display static analysis Exploded Graph."));
-
static llvm::cl::opt<std::string>
HTMLDiag("html-diags",
llvm::cl::desc("Generate HTML to report diagnostics"),
llvm::cl::value_desc("HTML directory"));
//===----------------------------------------------------------------------===//
+// Analyzer Options
+//===----------------------------------------------------------------------===//
+
+static llvm::cl::opt<bool>
+VisualizeEG("visualize-egraph",
+ llvm::cl::desc("Display static analysis Exploded Graph."));
+
+static llvm::cl::opt<bool>
+AnalyzeAll("checker-opt-analyze-headers",
+ llvm::cl::desc("Force the static analyzer to analyze "
+ "functions defined in header files."));
+
+//===----------------------------------------------------------------------===//
// Language Options
//===----------------------------------------------------------------------===//
@@ -1057,11 +1070,11 @@
case AnalysisGRSimpleVals:
return CreateGRSimpleVals(Diag, AnalyzeSpecificFunction, OutputFile,
- VisualizeEG, TrimGraph);
+ VisualizeEG, TrimGraph, AnalyzeAll);
case CheckerCFRef:
return CreateCFRefChecker(Diag, AnalyzeSpecificFunction, OutputFile,
- VisualizeEG, TrimGraph);
+ VisualizeEG, TrimGraph, AnalyzeAll);
case TestSerialization:
return CreateSerializationTest(Diag, FileMgr, LangOpts);
More information about the cfe-commits
mailing list