summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/docs/ReleaseNotes.rst18
-rw-r--r--clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp14
2 files changed, 22 insertions, 10 deletions
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 94c36930a7b..1311e196398 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -51,10 +51,10 @@ Major New Features
GCC 4.7 changed the mingw ABI. Clang 3.4 and older use the GCC 4.6
ABI. Clang 3.5 and newer use the GCC 4.7 abi.
-- The __has_attribute feature test is now target-aware. Older versions of Clang
- would return true when the attribute spelling was known, regardless of whether
- the attribute was available to the specific target. Clang now returns true only
- when the attribute pertains to the current compilation target.
+- The __has_attribute feature test is now target-aware. Older versions of Clang
+ would return true when the attribute spelling was known, regardless of whether
+ the attribute was available to the specific target. Clang now returns true
+ only when the attribute pertains to the current compilation target.
Improvements to Clang's diagnostics
@@ -144,6 +144,16 @@ libclang
Static Analyzer
---------------
+The `-analyzer-config` options are now passed from scan-build through to
+ccc-analyzer and then to Clang.
+
+With the option `-analyzer-config stable-report-filename=true`,
+instead of `report-XXXXXX.html`, scan-build/clang analyzer generate
+`report-<filename>-<function, method name>-<function position>-<id>.html`.
+(id = i++ for several issues found in the same function/method).
+
+List the function/method name in the index page of scan-build.
+
...
Core Analysis Improvements
diff --git a/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp b/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
index 2a455464822..b1e9f06cae0 100644
--- a/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
+++ b/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
@@ -26,6 +26,7 @@
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
+#include <sstream>
using namespace clang;
using namespace ento;
@@ -292,14 +293,15 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D,
std::error_code EC;
do {
// Find a filename which is not already used
+ std::stringstream filename;
Model = "";
+ filename << "report-"
+ << llvm::sys::path::filename(Entry->getName()).str()
+ << "-" << declName.c_str()
+ << "-" << offsetDecl
+ << "-" << i << ".html";
llvm::sys::path::append(Model, Directory,
- "report-" +
- llvm::sys::path::filename(Entry->getName()) +
- "-" +
- declName.c_str() +
- "-" + std::to_string(offsetDecl) +
- "-" + std::to_string(i) + ".html");
+ filename.str());
EC = llvm::sys::fs::openFileForWrite(Model.str(),
FD,
llvm::sys::fs::F_RW |
OpenPOWER on IntegriCloud