57d1f1c8a5 
								
							 
						 
						
							
							
								
								Use getAs<> where appropriate on QualTypes instead of using dyn_cast.  
							
							... 
							
							
							
							llvm-svn: 184775 
							
						 
						
							2013-06-24 18:47:11 +00:00  
				
					
						
							
							
								 
						
							
								7f62b95480 
								
							 
						 
						
							
							
								
								Check the canonical parameter type with getAs<>() in a static checker  
							
							... 
							
							
							
							This will prevent breakage when I introduce the DecayedType sugar node.
llvm-svn: 184755 
							
						 
						
							2013-06-24 16:56:16 +00:00  
				
					
						
							
							
								 
						
							
								61e221f68d 
								
							 
						 
						
							
							
								
								[analyzer] Replace isIntegerType() with isIntegerOrEnumerationType().  
							
							... 
							
							
							
							Previously, the analyzer used isIntegerType() everywhere, which uses the C
definition of "integer". The C++ predicate with the same behavior is
isIntegerOrUnscopedEnumerationType().
However, the analyzer is /really/ using this to ask if it's some sort of
"integrally representable" type, i.e. it should include C++11 scoped
enumerations as well. hasIntegerRepresentation() sounds like the right
predicate, but that includes vectors, which the analyzer represents by its
elements.
This commit audits all uses of isIntegerType() and replaces them with the
general isIntegerOrEnumerationType(), except in some specific cases where
it makes sense to exclude scoped enumerations, or any enumerations. These
cases now use isIntegerOrUnscopedEnumerationType() and getAs<BuiltinType>()
plus BuiltinType::isInteger().
isIntegerType() is hereby banned in the analyzer - lib/StaticAnalysis and
include/clang/StaticAnalysis. :-)
Fixes real assertion failures. PR15703 / <rdar://problem/12350701>
llvm-svn: 179081 
							
						 
						
							2013-04-09 02:30:33 +00:00  
				
					
						
							
							
								 
						
							
								0d8779cb79 
								
							 
						 
						
							
							
								
								[analyzer] Move DefaultBool so that all checkers can share it.  
							
							... 
							
							
							
							llvm-svn: 174782 
							
						 
						
							2013-02-08 23:55:50 +00:00  
				
					
						
							
							
								 
						
							
								3a02247dc9 
								
							 
						 
						
							
							
								
								Sort all of Clang's files under 'lib', and fix up the broken headers  
							
							... 
							
							
							
							uncovered.
This required manually correcting all of the incorrect main-module
headers I could find, and running the new llvm/utils/sort_includes.py
script over the files.
I also manually added quite a few missing headers that were uncovered by
shuffling the order or moving headers up to be main-module-headers.
llvm-svn: 169237 
							
						 
						
							2012-12-04 09:13:33 +00:00  
				
					
						
							
							
								 
						
							
								26a3661a10 
								
							 
						 
						
							
							
								
								Silence static analyzer issue by documenting that in this context  
							
							... 
							
							
							
							that a DeclRefExpr can never return a null decl.  We possibly should
hoist this into getDecl() itself.
llvm-svn: 165841 
							
						 
						
							2012-10-12 22:56:42 +00:00  
				
					
						
							
							
								 
						
							
								9fa2885522 
								
							 
						 
						
							
							
								
								clang support for Bitrig (an OpenBSD fork); patch by David Hill.  
							
							... 
							
							
							
							llvm-svn: 161546 
							
						 
						
							2012-08-08 23:57:20 +00:00  
				
					
						
							
							
								 
						
							
								afddb9c81c 
								
							 
						 
						
							
							
								
								Revert "Tweak insecureAPI analyzer checks to have the ability to be individually disabled."  
							
							... 
							
							
							
							Jordan Rose corrected me that this actually isn't needed.
llvm-svn: 159462 
							
						 
						
							2012-06-29 21:01:35 +00:00  
				
					
						
							
							
								 
						
							
								a33b078e73 
								
							 
						 
						
							
							
								
								Tweak insecureAPI analyzer checks to have the ability to be individually disabled.  
							
							... 
							
							
							
							The solution is a bit inefficient: it creates N checkers, one for each check, and
each check does a dispatch on the function name.  This is redundant, but we can fix
this once we have the proper ability to enable/disable subchecks.
Fixes <rdar://problem/11780180>.
llvm-svn: 159459 
							
						 
						
							2012-06-29 20:44:58 +00:00  
				
					
						
							
							
								 
						
							
								5a10f08b52 
								
							 
						 
						
							
							
								
								Include the "issue context" (e.g. function or method) where a static analyzer issue occurred in the plist output.  
							
							... 
							
							
							
							Fixes <rdar://problem/11004527>
llvm-svn: 154030 
							
						 
						
							2012-04-04 18:11:35 +00:00  
				
					
						
							
							
								 
						
							
								2c1dd2716a 
								
							 
						 
						
							
							
								
								Basic: import SmallString<> into clang namespace  
							
							... 
							
							
							
							(I was going to fix the TODO about DenseMap too, but
that would break self-host right now. See PR11922.)
llvm-svn: 149799 
							
						 
						
							2012-02-05 02:13:05 +00:00  
				
					
						
							
							
								 
						
							
								4903802fbf 
								
							 
						 
						
							
							
								
								Move a method from IdentifierTable.h out of line and remove the SmallString include.  
							
							... 
							
							
							
							Fix all the transitive include users.
llvm-svn: 149783 
							
						 
						
							2012-02-04 13:45:25 +00:00  
				
					
						
							
							
								 
						
							
								ee5e8ae845 
								
							 
						 
						
							
							
								
								[analyzer] Change the warning to suggest 'strlcat/strlcpy' as  
							
							... 
							
							
							
							replacements for 'starcat/strcpy' instead of 'strncat/strncpy'.
llvm-svn: 149406 
							
						 
						
							2012-01-31 19:33:31 +00:00  
				
					
						
							
							
								 
						
							
								89eaf8d531 
								
							 
						 
						
							
							
								
								Implement checker that looks for calls to mktemps and friends that have fewer than 6 Xs.  Implements <rdar://problem/6336672>.  
							
							... 
							
							
							
							llvm-svn: 148531 
							
						 
						
							2012-01-20 05:35:06 +00:00  
				
					
						
							
							
								 
						
							
								c54dc9515d 
								
							 
						 
						
							
							
								
								Turn 'SecuritySyntaxChecker' into a "meta" security checker for insecure APIs.  Now  
							
							... 
							
							
							
							multiple checks are exposed as separate checkers, but CheckerManager only creates
one Checker object.
llvm-svn: 148525 
							
						 
						
							2012-01-20 01:44:29 +00:00  
				
					
						
							
							
								 
						
							
								81ce1c8a99 
								
							 
						 
						
							
							
								
								Rename AnalysisContext to AnalysisDeclContext.  Not only is this name more accurate, but it frees up the name AnalysisContext for other uses.  
							
							... 
							
							
							
							llvm-svn: 142782 
							
						 
						
							2011-10-24 01:32:45 +00:00  
				
					
						
							
							
								 
						
							
								b89514a9b8 
								
							 
						 
						
							
							
								
								Change operator<< for raw_ostream and NamedDecl to take a reference instead of a pointer.  
							
							... 
							
							
							
							Passing a pointer was a bad idea as it collides with the overload for void*.
llvm-svn: 141971 
							
						 
						
							2011-10-14 18:45:37 +00:00  
				
					
						
							
							
								 
						
							
								fedf5dfc71 
								
							 
						 
						
							
							
								
								[analyzer] Warn about the use of insecure, deprecated vfork() function PR11053 ( http://llvm.org/bugs/show_bug.cgi?id=11053 ).  
							
							... 
							
							
							
							A patch by Graham Lee!
llvm-svn: 141643 
							
						 
						
							2011-10-11 04:34:54 +00:00  
				
					
						
							
							
								 
						
							
								c29bed3989 
								
							 
						 
						
							
							
								
								[analyzer] Refactor PathDiagnosticLocation: Make PathDiagnosticLocation(SourceLocation...) private. Most of the effort here goes to making BugReport refer to a PathDiagnosticLocation instead of FullSourceLocation.  
							
							... 
							
							
							
							(Another step closer to the goal of having Diagnostics which can recover from invalid SourceLocations.)
llvm-svn: 140182 
							
						 
						
							2011-09-20 21:38:35 +00:00  
				
					
						
							
							
								 
						
							
								e8bbc12152 
								
							 
						 
						
							
							
								
								Extend the ASTContext constructor to delay the initialization of  
							
							... 
							
							
							
							builtin types (When requested). This is another step toward making
ASTUnit build the ASTContext as needed when loading an AST file,
rather than doing so after the fact. No actual functionality change (yet).
llvm-svn: 138985 
							
						 
						
							2011-09-02 00:18:52 +00:00  
				
					
						
							
							
								 
						
							
								417d566775 
								
							 
						 
						
							
							
								
								Remove dead code.  
							
							... 
							
							
							
							llvm-svn: 138183 
							
						 
						
							2011-08-20 01:15:28 +00:00  
				
					
						
							
							
								 
						
							
								0e62c1cc0b 
								
							 
						 
						
							
							
								
								remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports  
							
							... 
							
							
							
							them into the clang namespace.
llvm-svn: 135852 
							
						 
						
							2011-07-23 10:55:15 +00:00  
				
					
						
							
							
								 
						
							
								de909e4946 
								
							 
						 
						
							
							
								
								Add security syntax checker for strcat() which causes the Static Analyzer to generate a warning any time the strcat() function is used with a note suggesting to use a function which provides bounded buffers. CWE-119.  
							
							... 
							
							
							
							Also, brings the security syntax checker more inline with coding standards.
llvm-svn: 128916 
							
						 
						
							2011-04-05 20:18:46 +00:00  
				
					
						
							
							
								 
						
							
								fca2e9618a 
								
							 
						 
						
							
							
								
								Refactoring the security checker a little bit so that each CallExpr check doesn't get called for each CallExpr. Instead it does a switch and only runs the check for the proper identifier. Slight speed improvement (probably significant on very large ASTs), and should make it easier and more clear to add more checks for other CallExpr's later.  
							
							... 
							
							
							
							llvm-svn: 128785 
							
						 
						
							2011-04-03 05:07:11 +00:00  
				
					
						
							
							
								 
						
							
								6ffe738f24 
								
							 
						 
						
							
							
								
								Add security syntax checker for strcpy() which causes the Static Analyzer to generate a warning any time the strcpy() function is used with a note suggesting to use a function which provides bounded buffers.  
							
							... 
							
							
							
							llvm-svn: 128679 
							
						 
						
							2011-03-31 22:09:14 +00:00  
				
					
						
							
							
								 
						
							
								70568c2be7 
								
							 
						 
						
							
							
								
								Fix spelling in a comment. (test commit)  
							
							... 
							
							
							
							llvm-svn: 128670 
							
						 
						
							2011-03-31 21:26:55 +00:00  
				
					
						
							
							
								 
						
							
								6a5674ffa6 
								
							 
						 
						
							
							
								
								[analyzer] Rename CheckerV2 -> Checker.  
							
							... 
							
							
							
							llvm-svn: 126726 
							
						 
						
							2011-03-01 01:16:21 +00:00  
				
					
						
							
							
								 
						
							
								af45aca670 
								
							 
						 
						
							
							
								
								[analyzer] Use the new registration mechanism on the non-path-sensitive-checkers:  
							
							... 
							
							
							
							DeadStoresChecker
  ObjCMethSigsChecker
  ObjCUnusedIvarsChecker
  SizeofPointerChecker
  ObjCDeallocChecker
  SecuritySyntaxChecker
llvm-svn: 125779 
							
						 
						
							2011-02-17 21:39:33 +00:00  
				
					
						
							
							
								 
						
							
								f8cbac4b91 
								
							 
						 
						
							
							
								
								Split 'include/clang/StaticAnalyzer' into 'include/clang/StaticAnalyzer/Core' and 'include/clang/StaticAnalyzer/Checkers'.  
							
							... 
							
							
							
							This layout matches lib/StaticAnalyzer, which corresponds to two StaticAnalyzer libraries.
llvm-svn: 125251 
							
						 
						
							2011-02-10 01:03:03 +00:00  
				
					
						
							
							
								 
						
							
								45e84b0053 
								
							 
						 
						
							
							
								
								NetBSD, OpenBSD, and Dragonfly BSD also have arc4random. Patch from  
							
							... 
							
							
							
							Joerg Sonnenberger!
llvm-svn: 123669 
							
						 
						
							2011-01-17 19:16:24 +00:00  
				
					
						
							
							
								 
						
							
								d99bd55a5e 
								
							 
						 
						
							
							
								
								Chris Lattner has strong opinions about directory  
							
							... 
							
							
							
							layout.  :)
Rename the 'EntoSA' directories to 'StaticAnalyzer'.
Internally we will still use the 'ento' namespace
for the analyzer engine (unless there are further
sabre rattlings...).
llvm-svn: 122514 
							
						 
						
							2010-12-23 19:38:26 +00:00