Zhongxing Xu
5b0ae81ab1
Add an option to make 'RemoveDeadBindings' a configurable behavior. This enables
...
us to measure the effect of this optimization.
llvm-svn: 61319
2008-12-22 01:52:37 +00:00
Ted Kremenek
08134c984b
Update Driver to new interface for LiveVariables.
...
llvm-svn: 60732
2008-12-09 00:17:51 +00:00
Zhongxing Xu
16e3f0e03f
Add support for pluggable components of static analyzer.
...
- Creator function pointers are saved in ManagerRegistry.
- The Register* class is used to notify ManagerRegistry new module is
available.
- AnalysisManager queries ManagerRegistry for configurable module. Then it
passes them to GRExprEngine, in turn to GRStateManager.
llvm-svn: 60143
2008-11-27 01:55:08 +00:00
Ted Kremenek
3ca000af83
Display the function we are analyzing before running LiveVariables.
...
llvm-svn: 59983
2008-11-24 20:53:32 +00:00
Chris Lattner
e4b95698df
Rename Selector::getName() to Selector::getAsString(), and add
...
a new NamedDecl::getAsString() method.
Change uses of Selector::getName() to just pass in a Selector
where possible (e.g. to diagnostics) instead of going through
an std::string.
This also adds new formatters for objcinstance and objcclass
as described in the dox.
llvm-svn: 59933
2008-11-24 03:33:13 +00:00
Ted Kremenek
b6df273d2c
Output 'ANALYZE' messages to standard error. This should address the intermixing of 'ANALYZE' and the other diagnostics the clang driver emits to standard error.
...
llvm-svn: 59730
2008-11-20 16:14:48 +00:00
Daniel Dunbar
f3502dbc14
[LLVM up] Update for raw_fd_ostream change. This fixes a FIXME that
...
the Backend output should be done in binary mode.
- I'd appreciate it if someone who has a Windows build could verify
this.
llvm-svn: 59221
2008-11-13 05:09:21 +00:00
Ted Kremenek
3391cb00fc
Patch by Nikita Zhuk: Add TranslationUnitActions to AnalysisConsumer.
...
llvm-svn: 58831
2008-11-07 02:09:25 +00:00
Ted Kremenek
b4ebbc5a86
AnalysisManager can now be used to for analyses over TranslationUnits.
...
llvm-svn: 58766
2008-11-05 19:05:06 +00:00
Ted Kremenek
14f18653f6
Hook up the Plist diagnostic client to the driver.
...
Fix Plist output.
llvm-svn: 58652
2008-11-03 23:18:07 +00:00
Ted Kremenek
e868c00d5a
Rename 'HTMLDiagnostics.h' to 'PathDiagnosticClients.h'
...
llvm-svn: 58646
2008-11-03 22:31:48 +00:00
Zhongxing Xu
9655394b6e
Adjust code format.
...
llvm-svn: 58420
2008-10-30 05:03:28 +00:00
Ted Kremenek
6779f893b9
Make the analyzer store (memory model) a command line option.
...
llvm-svn: 58056
2008-10-24 01:04:59 +00:00
Ted Kremenek
f0673e4eb6
Change implementation of NSError** coding-style check to be invoked at the end of the retain/release analysis.
...
llvm-svn: 56312
2008-09-18 21:25:13 +00:00
Ted Kremenek
fc3abeb1e5
Implemented one of the checks requested in PR 2600:
...
"Method accepting NSError** argument should have non-void return value to indicate that an error occurred."
Test case written, but the header needs to be delta-debugged reduced. Will commit shortly.
llvm-svn: 56297
2008-09-18 06:33:41 +00:00
Ted Kremenek
5047f71f3e
Output "ANALYZE:" diagnostics to STDOUT instead of STDERR.
...
llvm-svn: 55750
2008-09-04 00:02:50 +00:00
Daniel Dunbar
9a0ea046db
Add newline to end of file.
...
llvm-svn: 55525
2008-08-29 03:45:59 +00:00
Ted Kremenek
2eb49f295d
Always print out the function we're analyzing.
...
llvm-svn: 55488
2008-08-28 18:34:41 +00:00
Ted Kremenek
803e7e1e47
Ubigraph visualization: represent cached nodes with a different style.
...
llvm-svn: 55463
2008-08-28 05:02:09 +00:00
Ted Kremenek
266ec3fb4e
Automatically execute ubiviz.
...
Cleanup ubigraph files when don't drawing the graphs.
llvm-svn: 55459
2008-08-28 03:54:51 +00:00
Ted Kremenek
c8288b408a
Ubigraph-rendered ExplodedGraphs now have arrows and are oriented downward.
...
llvm-svn: 55446
2008-08-27 22:46:55 +00:00
Ted Kremenek
d461d7ad7e
Added Ubigraph visualization for the static analyzer (this is pretty alpha quality).
...
llvm-svn: 55442
2008-08-27 22:31:43 +00:00
Zhongxing Xu
9470a96b18
Moved HTMLDiagnostics to lib/Driver.
...
llvm-svn: 55274
2008-08-24 02:33:36 +00:00
Ted Kremenek
9898028742
Fix regression when invoking the MissingDealloc analysis: disable this check when in -fobjc-gc-only mode.
...
llvm-svn: 54319
2008-08-04 17:14:10 +00:00
Ted Kremenek
3b28f4911c
Add prototype implementation of unused ivar check.
...
llvm-svn: 53942
2008-07-23 00:45:26 +00:00
Ted Kremenek
1f352db96a
Moved registration of basic path-sensitive checks from GRSimpleVals.cpp to GRExprEngineInternalChecks.cpp.
...
llvm-svn: 53909
2008-07-22 16:21:24 +00:00
Ted Kremenek
fd7efdf20d
Provide an "Analysis Scope" for Analyses so checks can either be run on code declarations (bodies) or Objective-C @implementation blocks.
...
llvm-svn: 53584
2008-07-15 00:46:02 +00:00
Ted Kremenek
3063b73773
Break off declaration of Analysis enum into Analyses.def. The driver options in
...
clang.cpp now #include these definitions to create the command line options, and
AnalysisConsumer #includes this file to generate the switch statement to create
actions.
Renamed -check-objc-methodsigs to -warn-objc-methodsigs.
The "missing -dealloc" check is now optional: -warn-objc-missing-dealloc
llvm-svn: 53575
2008-07-14 23:41:13 +00:00
Ted Kremenek
3bfb314c25
Add new check: -check-objc-methodsigs. This check scans methods in
...
ObjCImplementationDecls and sees if a ancestor class defines a method with the
same selector but with a different type signature. Right now it just compares
return types, and mainly looks at differences in primitive values. The checking
will be expanded in the future.
llvm-svn: 53482
2008-07-11 22:40:47 +00:00
Ted Kremenek
e66ca6f35a
For the -dealloc checker, check the LangOptions to determine whether or not the code is compiled with GC.
...
llvm-svn: 53098
2008-07-03 14:35:01 +00:00
Ted Kremenek
1d3c797c90
Have BugReporter::getCFG and BugReporter::getLiveVariables returns pointers instead of references, because they can both fail
...
on functions we cannot construct full CFGs for yet.
llvm-svn: 53081
2008-07-03 05:26:14 +00:00
Ted Kremenek
0e7d25233e
Added static analysis check to see if a subclass of NSObject implements -dealloc, and whether or not that implementation calls [super dealloc].
...
llvm-svn: 53075
2008-07-03 04:29:21 +00:00
Ted Kremenek
c7efb536d5
Unify the code path for the Dead Stores checker to always use the BugReporter interface.
...
llvm-svn: 53054
2008-07-02 23:16:33 +00:00
Ted Kremenek
b1d0118a1a
Refactored some of the BugReporter interface so that data such as the ASTContext&, PathDiagnosticClient*, can be provided by an external source.
...
Split BugReporter into BugReporter and GRBugReporter so checkers not based on GRExprEngine can still use the BugReporter mechanism.
llvm-svn: 53048
2008-07-02 21:24:01 +00:00
Ted Kremenek
125d4a3b2d
GRExprEngine now expects the LiveVariables information to be provided by its creator.
...
This allows an optimization in AnalysisConsumer where the same LiveVariables information is used between multiple analyses.
llvm-svn: 53046
2008-07-02 20:13:38 +00:00
Ted Kremenek
d8ca1f6dd9
Added version of CheckDeadStores that accepts a client-provided LiveVariables object.
...
Modified the DeadStores logic in AnalysisConsumer.cpp to use the LiveVariables object created by the AnalysisManager.
llvm-svn: 53043
2008-07-02 18:39:20 +00:00
Ted Kremenek
f992cfb4ab
Moved logic for -dump-cfg and -view-cfg into AnalysisConsumer.
...
Renamed -dump-cfg to -cfg-dump, and -view-cfg to -cfg-view. This naming better matches the same options for asts (e.g. -ast-dump).
llvm-svn: 53041
2008-07-02 18:23:21 +00:00
Ted Kremenek
bdbe6130f4
Move -dump-live-variables logic to AnalysisConsumer.
...
llvm-svn: 53039
2008-07-02 18:11:29 +00:00
Ted Kremenek
71ac83246f
Migrate CheckerConsumer diagnostics to the new AnalysisConsumer interface.
...
Remove CheckerConsumer.
llvm-svn: 53029
2008-07-02 16:49:11 +00:00
Ted Kremenek
becec2cbbc
Move logic for "-checker-simple" to the new AnalysisConsumer interface.
...
llvm-svn: 53028
2008-07-02 16:35:50 +00:00
Ted Kremenek
8e631a0267
Migrated driver logic for running the CF retain/release checker over to the new AnalysisConsumer interface.
...
llvm-svn: 53002
2008-07-02 00:44:58 +00:00
Ted Kremenek
f0413bfcda
Added AnalysisConsumer, a meta-level ASTConsumer class to drive various
...
analyses. This potentially is the primordial origins of a Clang-equivalent
"PassManager".
The new AnalysisConsumer interface allows multiple analyses to be run from a
single invocation of Clang.
Migrated the logic of "-warn-dead-stores" and "-warn-uninit-values" to use the
new AnalysisConsumer interface. The new interface results in a significant code
reduction to incorporate an analysis into the Driver.
Updated a test case to (correctly) acknowledge that it contains a dead store
(this check wasn't being performed because it was previously masked by
-warn-uninit-values).
llvm-svn: 52996
2008-07-02 00:03:09 +00:00