summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/BugReporter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove tabs, and whitespace cleanups.Mike Stump2009-09-091-321/+320
| | | | llvm-svn: 81346
* Do not call FlushReports() in GRBugReporter's dtor. We already call it inZhongxing Xu2009-09-051-1/+1
| | | | | | ActionGRExprEngine(). llvm-svn: 81064
* Remove CodeDecl and CFG from GRExprEngine and GRStateManager.Zhongxing Xu2009-08-251-0/+8
| | | | | | | Now AnalysisManager is the only place we can get CodeDecl. This leads to an API change: GRState::bindExpr() now takes the CFG argument. llvm-svn: 79980
* Remove Decl and CFG from ExplodedGraph. This leads to a series small changes.Zhongxing Xu2009-08-251-2/+1
| | | | llvm-svn: 79973
* Rename: ProgramPoint::getContext() => ProgramPoint::getLocationContext().Zhongxing Xu2009-08-201-1/+1
| | | | llvm-svn: 79502
* Get the Decl from the current ExplodedNode. Eventually the diagnostic clientZhongxing Xu2009-08-191-2/+4
| | | | | | and other core analysis logic will be untied to a particular Decl. llvm-svn: 79420
* Remove unused parameter BugReporter due to previous patch.Zhongxing Xu2009-08-181-5/+3
| | | | llvm-svn: 79328
* Now we can get the CFG from the ProgramPoint. No need to pass in the Zhongxing Xu2009-08-181-4/+6
| | | | | | BugReporter. llvm-svn: 79327
* Enhance static analyzer diagnostics by introducing a new 'EnhancedBugReporter'Ted Kremenek2009-08-181-2/+2
| | | | | | | | | which allows custom checks to register callback creator functions for creating BugReporterVisitor objects. This allows various checks to include diagnostics such as 'assuming value is null' with little extra work. Eventually this API should be refactored to be cleaner and more simple. llvm-svn: 79302
* Core analysis engine template cleanup step 2: Zhongxing Xu2009-08-061-14/+11
| | | | | | merge ExplodedGraphImpl and ExplodedGraph. llvm-svn: 78291
* As GRState seems general enough, it is time to merge some template classes Zhongxing Xu2009-08-061-52/+52
| | | | | | | and their impl base classes. This can greatly simply some code of the core analysis engine. This patch merges ExplodedNodeImpl into ExplodedNode. llvm-svn: 78270
* add a fixmeZhongxing Xu2009-07-291-2/+4
| | | | llvm-svn: 77447
* Fix helper function GetNextStmt() to look for the first statement that has aTed Kremenek2009-07-281-0/+5
| | | | | | valid SourceLocation. llvm-svn: 77280
* Refactor 'PostStmt' and 'PreStmt' to subclass a common parent 'StmtPoint'.Ted Kremenek2009-07-221-23/+26
| | | | | | | | | | | | Educate GRExprEngine::VisitGraph() about 'PreStmt'. Mark the constructor of 'PostStmt' to be explicit, preventing implicit conversions and the selection of the wrong 'generateNode' method in GRStmtNodeBuilder. Constify a bunch of arguments, which falls out of the changes to ProgramPoint. llvm-svn: 76809
* Move the source-level CFG from libAST to libAnalysis.Ted Kremenek2009-07-161-1/+1
| | | | llvm-svn: 76092
* Remove the ASTContext parameter from the getBody() methods of Decl and ↵Argyrios Kyrtzidis2009-06-301-4/+3
| | | | | | | | subclasses. Timings showed no significant difference before and after the commit. llvm-svn: 74504
* Introduce a new concept to the static analyzer: SValuator.Ted Kremenek2009-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | GRTransferFuncs had the conflated role of both constructing SVals (symbolic expressions) as well as handling checker-specific logic. Now SValuator has the role of constructing SVals from expressions and GRTransferFuncs just handles checker-specific logic. The motivation is by separating these two concepts we will be able to much more easily create richer constraint-generating logic without coupling it to the main checker transfer function logic. We now have one implementation of SValuator: SimpleSValuator. SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals (which is removed in this patch). This includes the logic for EvalBinOp, EvalCast, etc. Because SValuator has a narrower role than the old GRTransferFuncs, the interfaces are much simpler, and so is the implementation of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of SVal-related logic in GRSimpleVals and cleaned it up while moving it over to SimpleSValuator. As a consequence of removing GRSimpleVals, there is no longer a '-checker-simple' option. The '-checker-cfref' did everything that option did but also ran the retain/release checker. Of course a user may not always wish to run the retain/release checker, nor do we wish core analysis logic buried in the checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp to separate out these pieces into the core analysis engine. llvm-svn: 74229
* API cleanup: move more methods from GRStateManager to GRState.Ted Kremenek2009-06-231-1/+1
| | | | llvm-svn: 73968
* Move clients over from using GRStateManager::BindXXX and friends toTed Kremenek2009-06-181-1/+1
| | | | | | GRState->bindXXX and friends (and constify some arguments along the way). llvm-svn: 73740
* Fix another bug in BugReporter where we wouldn't always select the bug ↵Ted Kremenek2009-05-161-14/+20
| | | | | | report in a bug equivalence class with the shortest path. llvm-svn: 71920
* BugReporter (extensive diagnostics): Do not include the range of target '}'Ted Kremenek2009-05-151-4/+6
| | | | llvm-svn: 71832
* BugReporter (extensive diagnostics): Add control-flow piece to '}' inTed Kremenek2009-05-151-16/+36
| | | | | | | loop body when generating 'Looping back to the head of the loop' diagnostics. llvm-svn: 71829
* BugReport::getEndPath() - Only add a Stmt's range to the constructed ↵Ted Kremenek2009-05-111-5/+8
| | | | | | PathDiagnosticEventPiece if the BugReport contained no explicit ranges. llvm-svn: 71516
* EdgeBuilder: DeclStmts and BinaryOperators are not the enclosing location ↵Ted Kremenek2009-05-111-1/+26
| | | | | | context when they are used as initialization code for loops. llvm-svn: 71480
* EdgeBuilder::cleanUpLocation() should used the PathDiagnosticLocation ↵Ted Kremenek2009-05-111-16/+31
| | | | | | constructor for a single point, not a range. llvm-svn: 71477
* BugReporter (extensive diagnostics): Add EdgeBuilder::cleanUpLocation for ↵Ted Kremenek2009-05-111-28/+34
| | | | | | canonicalization locations and use this in both popLocation and rawAddEdge. llvm-svn: 71470
* analyzer:Ted Kremenek2009-05-101-1/+1
| | | | | | | | - Improve -autorelease diagnostics. - Improve VLA diagnostics. - Use "short description" for bug when outputting to TextDiagnostics llvm-svn: 71383
* Add preliminary support for enhancing null-pointer dereference diagnostics.Ted Kremenek2009-05-071-46/+54
| | | | llvm-svn: 71135
* Refactor BugReporter interface to have a new 'BugReporterContext' andTed Kremenek2009-05-061-64/+55
| | | | | | | | | | | 'BugReporterVisitor'. This simplifies callbacks from BugReporter to BugReports (via VisitNode). It also lays the foundation for arbitrary visitor "call backs" that can be registered to a BugReporterContext as a PathDiagnostic is constructed. These call backs can help operate as separate "experts" that can work on constructed pieces of a PathDiagnostic for which they possess special knowledge. llvm-svn: 71121
* BugReporter (extensive diagnostics): improve location context generation for theTed Kremenek2009-05-051-3/+29
| | | | | | start of 'do' and '@synchronized' statements. llvm-svn: 71038
* BugReporter (extensive diagnostics): Fix getEnclosingStmtLocation to reasonTed Kremenek2009-05-051-7/+8
| | | | | | | about Exprs that are not consumed and fix where the loop iteration diagnostic goes. llvm-svn: 71027
* BugReporter (extensive diagnostics): don't mark location contexts that areTed Kremenek2009-05-041-2/+3
| | | | | | control-flow expressions as dead. llvm-svn: 70887
* BugReporter (extensive diagnostics): introduce the notion of a "dead"Ted Kremenek2009-05-011-10/+41
| | | | | | | | location context. This allows us to postpone the decision of whether or not a context should add a control-flow piece to the diagnostics when inspecting its subexpressions. llvm-svn: 70545
* Remove #if 0'ed code.Ted Kremenek2009-05-011-173/+0
| | | | llvm-svn: 70542
* Fix null dereference.Ted Kremenek2009-04-291-1/+1
| | | | llvm-svn: 70417
* BugReporter/PathDiagnostics:Ted Kremenek2009-04-291-4/+7
| | | | | | | | | - Add an (optional) short description for BugReports for clients that want to distinguish between long and short descriptions for bugs - Make the bug report for VLA less obscene for Plist diagnostics by using the short description llvm-svn: 70415
* Extensive diagnostics: Do not add a location context for do...while statements.Ted Kremenek2009-04-281-1/+1
| | | | llvm-svn: 70286
* BugReporter (extensive diagnostics): Clean up do...while control-flow edges, andTed Kremenek2009-04-281-7/+33
| | | | | | add "Looping back to the head of the loop" diagnostic for loops. llvm-svn: 70285
* Implement function-try-blocks. However, there's a very subtle bug that I ↵Sebastian Redl2009-04-261-2/+4
| | | | | | can't track down. llvm-svn: 70155
* Minor code cleanup.Eli Friedman2009-04-261-16/+4
| | | | llvm-svn: 70144
* split ObjC and C++ Statements out into their own headers.Chris Lattner2009-04-261-2/+2
| | | | llvm-svn: 70105
* BugReporter (extensive diagnostics): Recursively adjust the referred expressionTed Kremenek2009-04-231-12/+16
| | | | | | when popping location contexts. llvm-svn: 69898
* BugReporter (extensive diagnostics): Ignore parentheses when added control-flowTed Kremenek2009-04-231-0/+16
| | | | | | pieces for location contexts. llvm-svn: 69895
* BugReporter (extensive diagnostics): Use correct location for location contexts.Ted Kremenek2009-04-221-1/+1
| | | | llvm-svn: 69824
* BugReporter (extensive diagnostics): always add an edge if there is no locationTed Kremenek2009-04-221-1/+8
| | | | | | context. llvm-svn: 69823
* BugReporter (extensive diagnostics):Ted Kremenek2009-04-221-3/+2
| | | | | | | | - Remove stale assertion that was breaking the test suite. - When popping location contexts, only add a control-flow piece for fileID locations. llvm-svn: 69814
* BugReporter (extensive diagnostic algorithm): The initial control-flow edge nowTed Kremenek2009-04-221-2/+16
| | | | | | starts from the first character of the first statement. llvm-svn: 69813
* FunctionDecl::getBody() is getting an ASTContext argument for use inDouglas Gregor2009-04-181-3/+3
| | | | | | | | lazy PCH deserialization. Propagate that argument wherever it needs to be. No functionality change, except that I've tightened up a few PCH tests in preparation. llvm-svn: 69406
* Removed some commented code.Ted Kremenek2009-04-071-16/+3
| | | | llvm-svn: 68495
* PathDiagnostic generation: experiment with avoiding generation of control-flowTed Kremenek2009-04-071-4/+4
| | | | | | pieces between block entrance and block end unless necessary. llvm-svn: 68483
OpenPOWER on IntegriCloud