From d427023c334fe03105d9359711a3df4d6f23b344 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar <daniel@zuster.org> Date: Tue, 20 Jan 2009 23:17:32 +0000 Subject: [PATCH] Add -analyze action to run static analyzer, instead of inferring from individual checker options. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62634 91177308-0d34-0410-b5e6-96231b3b80d8 --- Driver/clang.cpp | 8 +++----- test/Analysis/CFDateGC.m | 2 +- test/Analysis/CFNumber.c | 2 +- test/Analysis/CFRetainRelease_NSAssertionHandler.m | 2 +- test/Analysis/CGColorSpace.c | 2 +- test/Analysis/CheckNSError.m | 2 +- test/Analysis/MissingDealloc.m | 2 +- test/Analysis/NSPanel.m | 2 +- test/Analysis/NSString.m | 2 +- test/Analysis/NSWindow.m | 2 +- test/Analysis/NoReturn.m | 4 ++-- test/Analysis/ObjCProperties.m | 2 +- test/Analysis/ObjCRetSigs.m | 2 +- test/Analysis/PR2978.m | 2 +- test/Analysis/array-struct.c | 4 ++-- test/Analysis/cfref_PR2519.c | 2 +- test/Analysis/cfref_rdar6080742.c | 2 +- test/Analysis/complex.c | 2 +- test/Analysis/conditional-op-missing-lhs.c | 2 +- test/Analysis/dead-stores.c | 6 +++--- test/Analysis/dead-stores.m | 2 +- test/Analysis/exercise-ps.c | 2 +- test/Analysis/fields.c | 4 ++-- test/Analysis/func.c | 2 +- test/Analysis/misc-ps.m | 2 +- test/Analysis/no-exit-cfg.c | 2 +- test/Analysis/null-deref-ps.c | 4 ++-- test/Analysis/outofbound.c | 2 +- test/Analysis/rdar-6442306-1.m | 4 ++-- test/Analysis/refcnt_naming.m | 2 +- test/Analysis/retain-release.m | 2 +- test/Analysis/stack-addr-ps.c | 2 +- test/Analysis/uninit-msg-expr.m | 2 +- test/Analysis/uninit-ps-rdar6145427.m | 2 +- test/Analysis/uninit-vals-ps-region.c | 2 +- test/Analysis/uninit-vals-ps.c | 4 ++-- test/Analysis/uninit-vals.c | 2 +- test/Analysis/uninit-vals.m | 2 +- test/Analysis/unused-ivars.m | 2 +- utils/ccc-analyzer | 1 + 40 files changed, 50 insertions(+), 51 deletions(-) diff --git a/Driver/clang.cpp b/Driver/clang.cpp index 741eddc3a45..747f7e164d6 100644 --- a/Driver/clang.cpp +++ b/Driver/clang.cpp @@ -107,6 +107,8 @@ ProgAction(llvm::cl::desc("Choose output type:"), llvm::cl::ZeroOrMore, "Run preprocessor, emit preprocessed file"), clEnumValN(DumpRawTokens, "dump-raw-tokens", "Lex file in raw mode and dump raw tokens"), + clEnumValN(RunAnalysis, "analyze", + "Run static analysis engine"), clEnumValN(DumpTokens, "dump-tokens", "Run preprocessor, dump internal rep of tokens"), clEnumValN(ParseNoop, "parse-noop", @@ -1298,7 +1300,6 @@ static ASTConsumer* CreateASTConsumer(const std::string& InFile, return CreateBlockRewriter(InFile, OutputFile, Diag, LangOpts); case RunAnalysis: - assert (!AnalysisList.empty()); return CreateAnalysisConsumer(&AnalysisList[0], &AnalysisList[0]+AnalysisList.size(), AnalysisStoreOpt, AnalysisDiagOpt, @@ -1545,10 +1546,7 @@ int main(int argc, char **argv) { exit(1); } - // Are we invoking one or more source analyses? - if (!AnalysisList.empty() && ProgAction == ParseSyntaxOnly) - ProgAction = RunAnalysis; - else if (!InheritanceViewCls.empty()) // C++ visualization? + if (!InheritanceViewCls.empty()) // C++ visualization? ProgAction = InheritanceView; llvm::OwningPtr<SourceManager> SourceMgr; diff --git a/test/Analysis/CFDateGC.m b/test/Analysis/CFDateGC.m index 04d2209a3cc..401cef4e940 100644 --- a/test/Analysis/CFDateGC.m +++ b/test/Analysis/CFDateGC.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify -fobjc-gc %s +// RUN: clang -analyze -checker-cfref -verify -fobjc-gc %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/CFNumber.c b/test/Analysis/CFNumber.c index 19a1ec07921..6daeb729c9f 100644 --- a/test/Analysis/CFNumber.c +++ b/test/Analysis/CFNumber.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify -triple x86_64-apple-darwin9 %s +// RUN: clang -analyze -checker-cfref -verify -triple x86_64-apple-darwin9 %s typedef signed long CFIndex; typedef const struct __CFAllocator * CFAllocatorRef; diff --git a/test/Analysis/CFRetainRelease_NSAssertionHandler.m b/test/Analysis/CFRetainRelease_NSAssertionHandler.m index b17a51a673c..13a2236518f 100644 --- a/test/Analysis/CFRetainRelease_NSAssertionHandler.m +++ b/test/Analysis/CFRetainRelease_NSAssertionHandler.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef struct objc_selector *SEL; typedef signed char BOOL; diff --git a/test/Analysis/CGColorSpace.c b/test/Analysis/CGColorSpace.c index 97bf27982cd..7dac73ca3a2 100644 --- a/test/Analysis/CGColorSpace.c +++ b/test/Analysis/CGColorSpace.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef struct CGColorSpace *CGColorSpaceRef; extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void); diff --git a/test/Analysis/CheckNSError.m b/test/Analysis/CheckNSError.m index 241c68cd85b..7da12c04b89 100644 --- a/test/Analysis/CheckNSError.m +++ b/test/Analysis/CheckNSError.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef signed char BOOL; typedef int NSInteger; diff --git a/test/Analysis/MissingDealloc.m b/test/Analysis/MissingDealloc.m index e6df6f071b8..3b16aa3feab 100644 --- a/test/Analysis/MissingDealloc.m +++ b/test/Analysis/MissingDealloc.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify +// RUN: clang -analyze -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify typedef signed char BOOL; @protocol NSObject - (BOOL)isEqual:(id)object; @end @interface NSObject <NSObject> {} diff --git a/test/Analysis/NSPanel.m b/test/Analysis/NSPanel.m index a24818e19ed..8a64581b2ef 100644 --- a/test/Analysis/NSPanel.m +++ b/test/Analysis/NSPanel.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s // BEGIN delta-debugging reduced header stuff diff --git a/test/Analysis/NSString.m b/test/Analysis/NSString.m index ccee61b2f71..af8909f838b 100644 --- a/test/Analysis/NSString.m +++ b/test/Analysis/NSString.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/NSWindow.m b/test/Analysis/NSWindow.m index 012b2ded229..f7202f55638 100644 --- a/test/Analysis/NSWindow.m +++ b/test/Analysis/NSWindow.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -warn-dead-stores -verify %s +// RUN: clang -analyze -checker-cfref -warn-dead-stores -verify %s // These declarations were reduced using Delta-Debugging from Foundation.h // on Mac OS X. The test cases are below. diff --git a/test/Analysis/NoReturn.m b/test/Analysis/NoReturn.m index f67a673adb6..16870f8aa10 100644 --- a/test/Analysis/NoReturn.m +++ b/test/Analysis/NoReturn.m @@ -1,5 +1,5 @@ -// RUN: clang -checker-simple -verify %s && -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-simple -verify %s && +// RUN: clang -analyze -checker-cfref -verify %s #include <stdarg.h> diff --git a/test/Analysis/ObjCProperties.m b/test/Analysis/ObjCProperties.m index f207475bd63..f2f18b57711 100644 --- a/test/Analysis/ObjCProperties.m +++ b/test/Analysis/ObjCProperties.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple %s -verify +// RUN: clang -analyze -checker-simple %s -verify // The point of this test cases is to exercise properties in the static // analyzer diff --git a/test/Analysis/ObjCRetSigs.m b/test/Analysis/ObjCRetSigs.m index 009f6c38080..2d1aa80d125 100644 --- a/test/Analysis/ObjCRetSigs.m +++ b/test/Analysis/ObjCRetSigs.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-methodsigs -verify %s +// RUN: clang -analyze -warn-objc-methodsigs -verify %s #include <stdio.h> diff --git a/test/Analysis/PR2978.m b/test/Analysis/PR2978.m index 0b9ae233786..e2a031dd068 100644 --- a/test/Analysis/PR2978.m +++ b/test/Analysis/PR2978.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-missing-dealloc %s -verify +// RUN: clang -analyze -warn-objc-missing-dealloc %s -verify // Tests for the checker which checks missing/extra ivar 'release' calls // in dealloc. diff --git a/test/Analysis/array-struct.c b/test/Analysis/array-struct.c index 8f4bb044ba8..1d5e9448e92 100644 --- a/test/Analysis/array-struct.c +++ b/test/Analysis/array-struct.c @@ -1,5 +1,5 @@ -// RUN: clang -checker-simple -verify %s -// DISABLE: clang -checker-simple -analyzer-store-region -verify %s +// RUN: clang -analyze -checker-simple -verify %s +// DISABLE: clang -analyze -checker-simple -analyzer-store-region -verify %s struct s { int data; diff --git a/test/Analysis/cfref_PR2519.c b/test/Analysis/cfref_PR2519.c index aa429a6f7eb..22146fbf6dd 100644 --- a/test/Analysis/cfref_PR2519.c +++ b/test/Analysis/cfref_PR2519.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef unsigned char Boolean; typedef signed long CFIndex; diff --git a/test/Analysis/cfref_rdar6080742.c b/test/Analysis/cfref_rdar6080742.c index 28d7d15c666..1364e8f6e8f 100644 --- a/test/Analysis/cfref_rdar6080742.c +++ b/test/Analysis/cfref_rdar6080742.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s // This test case was reported in <rdar:problem/6080742>. // It tests path-sensitivity with respect to '!(cfstring != 0)' (negation of inequality). diff --git a/test/Analysis/complex.c b/test/Analysis/complex.c index 0698d9cd8b6..22a239aace6 100644 --- a/test/Analysis/complex.c +++ b/test/Analysis/complex.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s #include <stdint.h> diff --git a/test/Analysis/conditional-op-missing-lhs.c b/test/Analysis/conditional-op-missing-lhs.c index 9fbb9f19875..8befc39854f 100644 --- a/test/Analysis/conditional-op-missing-lhs.c +++ b/test/Analysis/conditional-op-missing-lhs.c @@ -1,4 +1,4 @@ -// RUN: clang -warn-dead-stores -warn-uninit-values -verify %s +// RUN: clang -analyze -warn-dead-stores -warn-uninit-values -verify %s void f1() { diff --git a/test/Analysis/dead-stores.c b/test/Analysis/dead-stores.c index 92dfdf712c5..c72bdcf2b45 100644 --- a/test/Analysis/dead-stores.c +++ b/test/Analysis/dead-stores.c @@ -1,6 +1,6 @@ -// RUN: clang -warn-dead-stores -verify %s && -// RUN: clang -checker-simple -warn-dead-stores -verify %s && -// RUN: clang -warn-dead-stores -checker-simple -verify %s +// RUN: clang -analyze -warn-dead-stores -verify %s && +// RUN: clang -analyze -checker-simple -warn-dead-stores -verify %s && +// RUN: clang -analyze -warn-dead-stores -checker-simple -verify %s void f1() { diff --git a/test/Analysis/dead-stores.m b/test/Analysis/dead-stores.m index f58c2c135f6..ee948538858 100644 --- a/test/Analysis/dead-stores.m +++ b/test/Analysis/dead-stores.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-dead-stores -verify %s +// RUN: clang -analyze -warn-dead-stores -verify %s typedef signed char BOOL; typedef unsigned int NSUInteger; diff --git a/test/Analysis/exercise-ps.c b/test/Analysis/exercise-ps.c index 0d5af4bcde2..f561912d21a 100644 --- a/test/Analysis/exercise-ps.c +++ b/test/Analysis/exercise-ps.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s // // Just exercise the analyzer (no assertions). diff --git a/test/Analysis/fields.c b/test/Analysis/fields.c index 72de12c4dcc..defa19ead99 100644 --- a/test/Analysis/fields.c +++ b/test/Analysis/fields.c @@ -1,5 +1,5 @@ -// RUN: clang -checker-cfref %s -verify && -// RUN: clang -checker-simple %s -verify +// RUN: clang -analyze -checker-cfref %s -verify && +// RUN: clang -analyze -checker-simple %s -verify unsigned foo(); typedef struct bf { unsigned x:2; } bf; diff --git a/test/Analysis/func.c b/test/Analysis/func.c index 49824c3ca65..53c4432a4d0 100644 --- a/test/Analysis/func.c +++ b/test/Analysis/func.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s void f(void) { void (*p)(void); diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m index 5fccf5724e9..f9f1bdd4513 100644 --- a/test/Analysis/misc-ps.m +++ b/test/Analysis/misc-ps.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref --verify -fblocks %s +// RUN: clang -analyze -checker-cfref --verify -fblocks %s // Reduced test case from crash in <rdar://problem/6253157> @class NSObject; diff --git a/test/Analysis/no-exit-cfg.c b/test/Analysis/no-exit-cfg.c index b61abf548f0..60637a1916e 100644 --- a/test/Analysis/no-exit-cfg.c +++ b/test/Analysis/no-exit-cfg.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s // This is a test case for the issue reported in PR 2819: // http://llvm.org/bugs/show_bug.cgi?id=2819 diff --git a/test/Analysis/null-deref-ps.c b/test/Analysis/null-deref-ps.c index 5092e82e418..18884c12aea 100644 --- a/test/Analysis/null-deref-ps.c +++ b/test/Analysis/null-deref-ps.c @@ -1,5 +1,5 @@ -// RUN: clang -std=gnu99 -checker-simple -verify %s && -// RUN: clang -std=gnu99 -checker-simple -analyzer-store-region -analyzer-purge-dead=false -verify %s +// RUN: clang -analyze -std=gnu99 -checker-simple -verify %s && +// RUN: clang -analyze -std=gnu99 -checker-simple -analyzer-store-region -analyzer-purge-dead=false -verify %s #include<stdint.h> #include <assert.h> diff --git a/test/Analysis/outofbound.c b/test/Analysis/outofbound.c index 6e6e8f033b5..ab9c0cfa4c8 100644 --- a/test/Analysis/outofbound.c +++ b/test/Analysis/outofbound.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -analyzer-store-region -verify %s +// RUN: clang -analyze -checker-simple -analyzer-store-region -verify %s char f1() { char* s = "abcd"; diff --git a/test/Analysis/rdar-6442306-1.m b/test/Analysis/rdar-6442306-1.m index 2bc5c5c75f4..ea8d9baf6e6 100644 --- a/test/Analysis/rdar-6442306-1.m +++ b/test/Analysis/rdar-6442306-1.m @@ -1,5 +1,5 @@ -// RUN: clang -checker-cfref %s --analyzer-store-basic -verify -// DISABLE: clang -checker-cfref %s --analyzer-store-region -verify +// RUN: clang -analyze -checker-cfref %s --analyzer-store-basic -verify +// DISABLE: clang -analyze -checker-cfref %s --analyzer-store-region -verify typedef int bar_return_t; typedef struct { diff --git a/test/Analysis/refcnt_naming.m b/test/Analysis/refcnt_naming.m index 1390cdd73d0..3c86853b47e 100644 --- a/test/Analysis/refcnt_naming.m +++ b/test/Analysis/refcnt_naming.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef const struct __CFString * CFStringRef; typedef const struct __CFAllocator * CFAllocatorRef; diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m index bf833bf2aca..ec40a9a0f79 100644 --- a/test/Analysis/retain-release.m +++ b/test/Analysis/retain-release.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/stack-addr-ps.c b/test/Analysis/stack-addr-ps.c index 58687f36c70..57ce7dc8850 100644 --- a/test/Analysis/stack-addr-ps.c +++ b/test/Analysis/stack-addr-ps.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s #include <stdlib.h> #include <alloca.h> diff --git a/test/Analysis/uninit-msg-expr.m b/test/Analysis/uninit-msg-expr.m index 10b98373142..3bceca0e6c3 100644 --- a/test/Analysis/uninit-msg-expr.m +++ b/test/Analysis/uninit-msg-expr.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/uninit-ps-rdar6145427.m b/test/Analysis/uninit-ps-rdar6145427.m index b24cbaf6570..530139da932 100644 --- a/test/Analysis/uninit-ps-rdar6145427.m +++ b/test/Analysis/uninit-ps-rdar6145427.m @@ -1,4 +1,4 @@ -// RUN: clang -verify -checker-cfref %s +// RUN: clang -analyze -verify -checker-cfref %s // Delta-Debugging reduced preamble. typedef signed char BOOL; diff --git a/test/Analysis/uninit-vals-ps-region.c b/test/Analysis/uninit-vals-ps-region.c index 96da8b0935a..830e32ad8fa 100644 --- a/test/Analysis/uninit-vals-ps-region.c +++ b/test/Analysis/uninit-vals-ps-region.c @@ -1,4 +1,4 @@ -// DISABLE: clang -checker-simple -analyzer-store-region -verify %s +// DISABLE: clang -analyze -checker-simple -analyzer-store-region -verify %s struct s { int data; diff --git a/test/Analysis/uninit-vals-ps.c b/test/Analysis/uninit-vals-ps.c index b8600009299..96963e4fff4 100644 --- a/test/Analysis/uninit-vals-ps.c +++ b/test/Analysis/uninit-vals-ps.c @@ -1,5 +1,5 @@ -// RUN: clang -checker-cfref -verify %s && -// RUN: clang -checker-cfref -analyzer-store-region -verify %s +// RUN: clang -analyze -checker-cfref -verify %s && +// RUN: clang -analyze -checker-cfref -analyzer-store-region -verify %s struct FPRec { void (*my_func)(int * x); diff --git a/test/Analysis/uninit-vals.c b/test/Analysis/uninit-vals.c index fa6d0fc481b..a7f5733dc41 100644 --- a/test/Analysis/uninit-vals.c +++ b/test/Analysis/uninit-vals.c @@ -1,4 +1,4 @@ -// RUN: clang -warn-uninit-values -verify %s +// RUN: clang -analyze -warn-uninit-values -verify %s int f1() { int x; diff --git a/test/Analysis/uninit-vals.m b/test/Analysis/uninit-vals.m index 74aa6672027..f7a7df766e5 100644 --- a/test/Analysis/uninit-vals.m +++ b/test/Analysis/uninit-vals.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef unsigned int NSUInteger; diff --git a/test/Analysis/unused-ivars.m b/test/Analysis/unused-ivars.m index dd6d69e597c..f1568dacc18 100644 --- a/test/Analysis/unused-ivars.m +++ b/test/Analysis/unused-ivars.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-unused-ivars %s -verify +// RUN: clang -analyze -warn-objc-unused-ivars %s -verify @interface A { diff --git a/utils/ccc-analyzer b/utils/ccc-analyzer index 14cbf54df10..71f840af51a 100755 --- a/utils/ccc-analyzer +++ b/utils/ccc-analyzer @@ -89,6 +89,7 @@ sub Analyze { push @CmdArgs,'-DIBOutlet=__attribute__((iboutlet))'; push @CmdArgs,@$Args; @CmdArgsSansAnalyses = @CmdArgs; + push @CmdArgs,'--analyze'; push @CmdArgs,(split /\s/,$Analyses); $RunAnalyzer = 1; } -- GitLab