[analyzer] Bug identification
authorGabor Horvath <xazax.hun@gmail.com>
Thu, 22 Oct 2015 11:53:04 +0000 (11:53 +0000)
committerGabor Horvath <xazax.hun@gmail.com>
Thu, 22 Oct 2015 11:53:04 +0000 (11:53 +0000)
commitefec16307ccc3c1ed8a5e223cf075e51198e6376
tree7fa5860179c42803cae91d27a71db7aadb6000c4
parentb91bee06deefe77a51d0a39b06c086df19aec82c
[analyzer] Bug identification

This patch adds hashes to the plist and html output to be able to identfy bugs
for suppressing false positives or diff results against a baseline. This hash
aims to be resilient for code evolution and is usable to identify bugs in two
different snapshots of the same software. One missing piece however is a
permanent unique identifier of the checker that produces the warning. Once that
issue is resolved, the hashes generated are going to change. Until that point
this feature is marked experimental, but it is suitable for early adoption.

Differential Revision: http://reviews.llvm.org/D10305

Original patch by: Bence Babati!

llvm-svn: 251011
40 files changed:
clang/include/clang/StaticAnalyzer/Core/IssueHash.h [new file with mode: 0644]
clang/lib/StaticAnalyzer/Checkers/Checkers.td
clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
clang/lib/StaticAnalyzer/Core/CMakeLists.txt
clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
clang/lib/StaticAnalyzer/Core/IssueHash.cpp [new file with mode: 0644]
clang/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp
clang/test/Analysis/MismatchedDeallocator-path-notes.cpp
clang/test/Analysis/NewDelete-path-notes.cpp
clang/test/Analysis/bug_hash_test.cpp [new file with mode: 0644]
clang/test/Analysis/bug_hash_test.m [new file with mode: 0644]
clang/test/Analysis/conditional-path-notes.c
clang/test/Analysis/cxx-for-range.cpp
clang/test/Analysis/diagnostics/deref-track-symbolic-region.c
clang/test/Analysis/diagnostics/report-issues-within-main-file.cpp
clang/test/Analysis/diagnostics/undef-value-caller.c
clang/test/Analysis/diagnostics/undef-value-param.c
clang/test/Analysis/diagnostics/undef-value-param.m
clang/test/Analysis/edges-new.mm
clang/test/Analysis/generics.m
clang/test/Analysis/inline-plist.c
clang/test/Analysis/inline-unique-reports.c
clang/test/Analysis/inlining/eager-reclamation-path-notes.c
clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp
clang/test/Analysis/inlining/path-notes.c
clang/test/Analysis/inlining/path-notes.cpp
clang/test/Analysis/inlining/path-notes.m
clang/test/Analysis/lambda-notes.cpp
clang/test/Analysis/malloc-plist.c
clang/test/Analysis/method-call-path-notes.cpp
clang/test/Analysis/model-file.cpp
clang/test/Analysis/null-deref-path-notes.m
clang/test/Analysis/objc-arc.m
clang/test/Analysis/plist-macros.cpp
clang/test/Analysis/plist-output-alternate.m
clang/test/Analysis/plist-output.m
clang/test/Analysis/retain-release-path-notes-gc.m
clang/test/Analysis/retain-release-path-notes.m
clang/test/Analysis/unix-fns.c
clang/utils/analyzer/CmpRuns.py