]> granicus.if.org Git - clang/commitdiff
Embed BUGLINE, BUGFILE, BUGPATHLENGTH in the emitted HTML file.
authorTed Kremenek <kremenek@apple.com>
Wed, 2 Apr 2008 20:44:16 +0000 (20:44 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 2 Apr 2008 20:44:16 +0000 (20:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49114 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/HTMLDiagnostics.cpp

index 82696664ac41a23a88b548fdcfdf6885cf10bbce..d4b481bfdad64f74e56b92d9a3f126f382d4c821 100644 (file)
@@ -114,27 +114,26 @@ void HTMLDiagnostics::HandlePathDiagnostic(const PathDiagnostic& D) {
   html::EscapeText(R, FileID);
   html::AddLineNumbers(R, FileID);
   
-  // Add the name of the file.
+  // Get the full directory name of the analyzed file.
+
+  const FileEntry* Entry = SMgr.getFileEntryForID(FileID);
+  std::string DirName(Entry->getDir()->getName());
   
-  {
-    std::ostringstream os;
+  if (DirName == ".")
+    DirName = llvm::sys::Path::GetCurrentDirectory().toString();
     
-    os << "<h1>";
+  // Add the name of the file as an <h1> tag.
 
-    const FileEntry* Entry = SMgr.getFileEntryForID(FileID);
-    const char* dname = Entry->getDir()->getName();
-    
-    if (strcmp(dname,".") == 0)
-      os << html::EscapeText(llvm::sys::Path::GetCurrentDirectory().toString());
-    else
-      os << html::EscapeText(dname);
+  {
+    std::ostringstream os;
     
-    os << "/" << html::EscapeText(Entry->getName()) << "</h1>\n";
+    os << "<h1>" << html::EscapeText(DirName)
+       << "/"    << html::EscapeText(Entry->getName()) << "</h1>\n";
 
     R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
   }
   
-  // Add the bug description.
+  // Embed meta-data tags.
   
   const std::string& BugDesc = D.getDescription();
   
@@ -142,7 +141,26 @@ void HTMLDiagnostics::HandlePathDiagnostic(const PathDiagnostic& D) {
     std::ostringstream os;
     os << "\n<!-- BUGDESC " << BugDesc << " -->\n";
     R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
-  }  
+  }
+  
+  {
+    std::ostringstream os;
+    os << "\n<!-- BUGFILE " << DirName << "/" << Entry->getName() << " -->\n";
+    R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
+  }
+  
+  {
+    std::ostringstream os;
+    os << "\n<!-- BUGLINE " << D.back()->getLocation().getLineNumber()
+       << " -->\n";
+    R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
+  }
+  
+  {
+    std::ostringstream os;
+    os << "\n<!-- BUGPATHLENGTH " << D.size() << " -->\n";
+    R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
+  }
 
   // Add CSS, header, and footer.