]> granicus.if.org Git - clang/commitdiff
[Static Analyzer] Make the paths relative from the project root when generating refer...
authorGabor Horvath <xazax.hun@gmail.com>
Wed, 8 Jul 2015 18:39:31 +0000 (18:39 +0000)
committerGabor Horvath <xazax.hun@gmail.com>
Wed, 8 Jul 2015 18:39:31 +0000 (18:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241706 91177308-0d34-0410-b5e6-96231b3b80d8

utils/analyzer/CmpRuns.py
utils/analyzer/SATestBuild.py

index a1f7a5649c5e72b1cd9d368cd3403a4b8d97dc91..ce5ddfb3add4b2b653228eec9bc2bf06e03d7fe9 100755 (executable)
@@ -37,7 +37,7 @@ import CmpRuns
 class SingleRunInfo:
     def __init__(self, path, root="", verboseLog=None):
         self.path = path
-        self.root = root
+        self.root = root.rstrip("/\\")
         self.verboseLog = verboseLog
 
 class AnalysisDiagnostic:
@@ -50,8 +50,8 @@ class AnalysisDiagnostic:
     def getFileName(self):
         root = self._report.run.root
         fileName = self._report.files[self._loc['file']]
-        if fileName.startswith(root) :
-            return fileName[len(root):]  
+        if fileName.startswith(root) and len(root) > 0:
+            return fileName[len(root)+1:]
         return fileName
 
     def getLine(self):
index 20839c24e18acf0c37fa37d9e4cb649b79915c1d..2d91ba41e24c8053debe2206486a57192fd5d76e 100755 (executable)
@@ -16,6 +16,7 @@ Repository Directory structure:
    - Project Dir2
      - ReferenceOutput
    ..
+Note that the build tree must be inside the project dir.
 
 To test the build of the analyzer one would:
    - Copy over a copy of the Repository Directory. (TODO: Prefer to ensure that 
@@ -337,6 +338,18 @@ def buildProject(Dir, SBOutputDir, ProjectBuildMode, IsReferenceBuild):
         
         if IsReferenceBuild :
             runCleanupScript(Dir, PBuildLogFile)
+
+            # Make the absolute paths relative in the reference results.
+            for (DirPath, Dirnames, Filenames) in os.walk(SBOutputDir):
+                for F in Filenames:
+                    if (not F.endswith('plist')):
+                        continue
+                    Plist = os.path.join(DirPath, F)
+                    Data = plistlib.readPlist(Plist)
+                    Paths = [SourceFile[len(Dir)+1:] if SourceFile.startswith(Dir)\
+                            else SourceFile for SourceFile in Data['files']]
+                    Data['files'] = Paths
+                    plistlib.writePlist(Data, Plist)
            
     finally:
         PBuildLogFile.close()
@@ -450,7 +463,7 @@ def runCmpResults(Dir, Strictness = 0):
             print "  Comparing Results: %s %s" % (RefDir, NewDir)
     
         DiffsPath = os.path.join(NewDir, DiffsSummaryFileName)
-        Opts = CmpRuns.CmpOptions(DiffsPath)
+        Opts = CmpRuns.CmpOptions(DiffsPath, "", Dir)
         # Discard everything coming out of stdout (CmpRun produces a lot of them).
         OLD_STDOUT = sys.stdout
         sys.stdout = Discarder()