Skip to content
Snippets Groups Projects
Commit a26ddabc authored by Ted Kremenek's avatar Ted Kremenek
Browse files

PathDiagnostics:

- 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>)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63084 91177308-0d34-0410-b5e6-96231b3b80d8
parent 54d1ccbf
No related branches found
No related tags found
No related merge requests found
......@@ -78,20 +78,23 @@ class PathDiagnostic {
unsigned Size;
std::string Desc;
std::string Category;
std::string BugType;
std::vector<std::string> OtherDesc;
public:
PathDiagnostic() : Size(0) {}
PathDiagnostic(const char* desc, const char* category)
: Size(0), Desc(desc), Category(category) {}
PathDiagnostic(const char* bugtype, const char* desc, const char* category)
: Size(0), Desc(desc), Category(category), BugType(bugtype) {}
PathDiagnostic(const std::string& desc, const std::string& category)
: Size(0), Desc(desc), Category(category) {}
PathDiagnostic(const std::string& bugtype, const std::string& desc,
const std::string& category)
: Size(0), Desc(desc), Category(category), BugType(bugtype) {}
~PathDiagnostic();
const std::string& getDescription() const { return Desc; }
const std::string& getBugType() const { return BugType; }
const std::string& getCategory() const { return Category; }
typedef std::vector<std::string>::const_iterator meta_iterator;
......
......@@ -727,6 +727,7 @@ void BugReporter::EmitWarning(BugReport& R) {
return;
llvm::OwningPtr<PathDiagnostic> D(new PathDiagnostic(R.getName(),
R.getDescription(),
R.getCategory()));
GeneratePathDiagnostic(*D.get(), R);
......
......@@ -246,6 +246,14 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D) {
R.InsertStrBefore(SMgr.getLocForStartOfFile(FID), os.str());
}
const std::string& BugType = D.getBugType();
if (!BugType.empty()) {
std::string s;
llvm::raw_string_ostream os(s);
os << "\n<!-- BUGTYPE " << BugType << " -->\n";
R.InsertStrBefore(SMgr.getLocForStartOfFile(FID), os.str());
}
const std::string& BugCategory = D.getCategory();
if (!BugCategory.empty()) {
......
......@@ -350,7 +350,7 @@ sub ScanFile {
# Scan the report file for tags.
open(IN, "$Dir/$FName") or DieDiag("Cannot open '$Dir/$FName'\n");
my $BugDesc = "";
my $BugType = "";
my $BugFile = "";
my $BugCategory;
my $BugPathLength = 1;
......@@ -361,8 +361,8 @@ sub ScanFile {
last if ($found == 5);
if (/<!-- BUGDESC (.*) -->$/) {
$BugDesc = $1;
if (/<!-- BUGTYPE (.*) -->$/) {
$BugType = $1;
++$found;
}
elsif (/<!-- BUGFILE (.*) -->$/) {
......@@ -390,7 +390,7 @@ sub ScanFile {
$BugCategory = "Other";
}
push @$Index,[ $FName, $BugCategory, $BugDesc, $BugFile, $BugLine,
push @$Index,[ $FName, $BugCategory, $BugType, $BugFile, $BugLine,
$BugPathLength ];
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment