Skip to content
  1. Jan 27, 2009
    • Ted Kremenek's avatar
      PathDiagnostics: · a3f462e4
      Ted Kremenek authored
      - Add the distinction between the 'bug type' and the 'bug description'
      
      HTMLDiagnostics:
      - Output the bug type field as HTML comments
      
      scan-build:
      - Use the bug type field instead of the bug description for the HTML table.
      - Radar filing now automatically picks up the bug description in the title (addresses <rdar://problem/6265970>)
      
      llvm-svn: 63084
      a3f462e4
  2. Jan 24, 2009
    • Ted Kremenek's avatar
      More hacking on static analyzer diagnostics. When emitting summary... · f08ac278
      Ted Kremenek authored
      More hacking on static analyzer diagnostics.  When emitting summary diagnostics the code paths for diagnostics involving paths or single locations are now unified.  This patch also constifies many arguments/methods that are touched by this logic, leading to a nice overall code cleanup.
      
      llvm-svn: 62903
      f08ac278
  3. Jan 23, 2009
  4. Jan 16, 2009
  5. Dec 20, 2008
  6. Dec 05, 2008
  7. Nov 24, 2008
    • Chris Lattner's avatar
      Rename NamedDecl::getName() to getNameAsString(). Replace a bunch of · f3d3faec
      Chris Lattner authored
      uses of getName() with uses of getDeclName().  This upgrades a bunch of
      diags to take DeclNames instead of std::strings.
      
      This also tweaks a couple of diagnostics to be cleaner and changes
      CheckInitializerTypes/PerformInitializationByConstructor to pass
      around DeclarationNames instead of std::strings.
      
      llvm-svn: 59947
      f3d3faec
  8. Nov 18, 2008
    • Chris Lattner's avatar
      This reworks some of the Diagnostic interfaces a bit to change how diagnostics · 8488c829
      Chris Lattner authored
      are formed.  In particular, a diagnostic with all its strings and ranges is now
      packaged up and sent to DiagnosticClients as a DiagnosticInfo instead of as a 
      ton of random stuff.  This has the benefit of simplifying the interface, making
      it more extensible, and allowing us to do more checking for things like access
      past the end of the various arrays passed in.
      
      In addition to introducing DiagnosticInfo, this also substantially changes how 
      Diagnostic::Report works.  Instead of being passed in all of the info required
      to issue a diagnostic, Report now takes only the required info (a location and 
      ID) and returns a fresh DiagnosticInfo *by value*.  The caller is then free to
      stuff strings and ranges into the DiagnosticInfo with the << operator.  When
      the dtor runs on the DiagnosticInfo object (which should happen at the end of
      the statement), the diagnostic is actually emitted with all of the accumulated
      information.  This is a somewhat tricky dance, but it means that the 
      accumulated DiagnosticInfo is allowed to keep pointers to other expression 
      temporaries without those pointers getting invalidated.
      
      This is just the minimal change to get this stuff working, but this will allow
      us to eliminate the zillions of variant "Diag" methods scattered throughout
      (e.g.) sema.  For example, instead of calling:
      
        Diag(BuiltinLoc, diag::err_overload_no_match, typeNames,
             SourceRange(BuiltinLoc, RParenLoc));
      
      We will soon be able to just do:
      
        Diag(BuiltinLoc, diag::err_overload_no_match)
            << typeNames << SourceRange(BuiltinLoc, RParenLoc));
      
      This scales better to support arbitrary types being passed in (not just 
      strings) in a type-safe way.  Go operator overloading?!
      
      llvm-svn: 59502
      8488c829
    • Chris Lattner's avatar
      eliminate dependence of strange "Diagnostic::Report" method, · 3de58149
      Chris Lattner authored
      delete huge trailing whitespace to fit in 80 cols.
      
      llvm-svn: 59497
      3de58149
  9. Oct 17, 2008
  10. Oct 06, 2008
  11. Oct 04, 2008
    • Ted Kremenek's avatar
      This is a big patch, but the functionality change is small and the rest of the... · 5ca90a24
      Ted Kremenek authored
      This is a big patch, but the functionality change is small and the rest of the patch consists of deltas due to API changes.
      
      This patch overhauls the "memory region" abstraction that was prototyped (but never really used) as part of the Store.h.  This patch adds MemRegion.h and MemRegion.cpp, which defines the class MemRegion and its subclasses.  This classes serve to define an abstract representation of memory, with regions being layered on other regions to to capture the relationships between fields and variables, variables and the address space they are allocated in, and so on.  
      
      The main motivation of this patch is that key parts of the analyzer assumed that all value bindings were to VarDecls.  In the future this won't be the case, and this patch removes lval::DeclVal and replaces it with lval::MemRegionVal.  Now all pieces of the analyzer must reason about abstract memory blocks instead of just variables.
      
      There should be no functionality change from this patch, but it opens the door for significant improvements to the analyzer such as field-sensitivity and object-sensitivity, both which were on hold until the memory abstraction got generalized.
      
      The memory region abstraction also allows type-information to literally be affixed to a memory region.  This will allow the some now redundant logic to be removed from the retain/release checker.
      
      llvm-svn: 57042
      5ca90a24
  12. Sep 20, 2008
  13. Sep 16, 2008
  14. Sep 12, 2008
  15. Aug 24, 2008
  16. Aug 17, 2008
  17. Aug 13, 2008
  18. Jul 14, 2008
  19. Jul 11, 2008
  20. Jul 03, 2008
  21. Jul 02, 2008
  22. Jun 20, 2008
  23. Jun 18, 2008
  24. Jun 17, 2008
  25. May 23, 2008
  26. May 16, 2008
    • Ted Kremenek's avatar
      Partitioned BugTypeCachedLocation::isCached() into two methods: one that... · 590abd36
      Ted Kremenek authored
      Partitioned BugTypeCachedLocation::isCached() into two methods: one that accepts and ExplodedNode, and the other that accepts a ProgramPoint.  The default behavior is to cache bug reports by the
      location they occur (the end node).  Subclasses can override this behavior by providing a different ProgramPoint.
      
      llvm-svn: 51197
      590abd36
  27. May 06, 2008
  28. May 03, 2008
  29. May 02, 2008
  30. May 01, 2008
  31. Apr 25, 2008
  32. Apr 24, 2008
Loading