Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1730)

Unified Diff: tools/win/new_analyze_warnings/retrieve_warnings.py

Issue 1061663002: Adding batch file and scripts to get new /analyze warnings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Set executable bit on retrieve_latest_warnings.bat. Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/win/new_analyze_warnings/retrieve_warnings.py
diff --git a/tools/win/new_analyze_warnings/retrieve_warnings.py b/tools/win/new_analyze_warnings/retrieve_warnings.py
new file mode 100644
index 0000000000000000000000000000000000000000..33c5d407797406a3ad542db082c858c9fabc4e6f
--- /dev/null
+++ b/tools/win/new_analyze_warnings/retrieve_warnings.py
@@ -0,0 +1,100 @@
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""
+This retrieves the latest warnings from the Chrome /analyze build machine, and
+does a diff.
+This script is intended to be run from retrieve_latest_warnings.bat which
+fills out the functionality.
+"""
+
+import urllib
+import sys
+import glob
+import os
+
+if len(sys.argv) < 2:
+ print "Missing build number."
+ sys.exit(10)
+
+buildNumber = int(sys.argv[1])
+
+baseURL = "http://build.chromium.org/p/chromium.fyi/builders/" + \
+ "Chromium%20Windows%20Analyze/"
+
+print "Finding recent builds on %s" % baseURL
+baseData = urllib.urlopen(baseURL).read()
+recentOff = baseData.find("Recent Builds:")
+buildPattern = 'success</td> <td><a href="' + \
+ '../../builders/Chromium%20Windows%20Analyze/builds/'
+# For some reason I couldn't get regular expressions to work on this data.
+latestBuildOff = baseData.find(buildPattern, recentOff) + len(buildPattern)
+if latestBuildOff < len(buildPattern):
+ print "Couldn't find successful build."
+ sys.exit(10)
+latestEndOff = baseData.find('"', latestBuildOff)
+latestBuildStr = baseData[latestBuildOff:latestEndOff]
+maxBuildNumber = int(latestBuildStr)
+if buildNumber > maxBuildNumber:
+ print "Requested build number (%d) is too high. Maximum is %d." % \
+ (buildNumber, maxBuildNumber)
+ sys.exit(10)
+# Treat negative numbers specially
+if sys.argv[1][0] == '-':
+ buildNumber = maxBuildNumber + buildNumber
+ if buildNumber < 0:
+ buildNumber = 0
+ print "Retrieving build number %d of %d" % (buildNumber, maxBuildNumber)
+
+# Found the last summary results in the current directory
+results = glob.glob("analyze*_summary.txt")
+results.sort()
+previous = "%04d" % (buildNumber - 1)
+if results:
+ possiblePrevious = results[-1][7:11]
+ if int(possiblePrevious) == buildNumber:
+ if len(results) > 1:
+ previous = results[-2][7:11]
+ else:
+ previous = possiblePrevious
+
+dataURL = baseURL + "builds/" + str(buildNumber) + "/steps/compile/logs/stdio"
+revisionURL = baseURL + "builds/" + str(buildNumber)
+
+# Retrieve the revision
+revisionData = urllib.urlopen(revisionURL).read()
+key = "Got Revision</td><td>"
+Off = revisionData.find(key) + len(key)
+if Off > len(key):
+ revision = revisionData[Off: Off + 40]
+ print "Revision is '%s'" % revision
+ print "Environment variables can be set with set_analyze_revision.bat"
+ payload = "set ANALYZE_REVISION=%s\r\n" % revision
+ payload += "set ANALYZE_BUILD_NUMBER=%04d\r\n" % buildNumber
+ payload += "set ANALYZE_PREV_BUILD_NUMBER=%s\r\n" % previous
+ open("set_analyze_revision.bat", "wt").write(payload)
+
+ # Retrieve the raw warning data
+ print "Retrieving raw build results. Please wait."
+ data = urllib.urlopen(dataURL).read()
+ if data.count("status: SUCCESS") == 0:
+ print "Build failed or is incomplete."
+ else:
+ # Fix up "'" and '"'
+ data = data.replace("&#39;", "'").replace("&#34;", '"')
+ # Fix up '<' and '>'
+ data = data.replace("&lt;", "<").replace("&gt;", ">")
+ # Fix up '&'
+ data = data.replace("&amp;", "&")
+ # Fix up random spans
+ data = data.replace('</span><span class="stdout">', '')
+ # Fix up the source paths to match my local /analyze repo
+ if "ANALYZE_REPO" in os.environ:
+ sourcePath = r"e:\b\build\slave\chromium_windows_analyze\build\src"
+ destPath = os.path.join(os.environ["ANALYZE_REPO"], "src")
+ data = data.replace(sourcePath, destPath)
+ outputName = "analyze%04d_full.txt" % buildNumber
+ open(outputName, "w").write(data)
+ print "Done. Data is in %s" % outputName
+else:
+ print "No revision information found!"
« no previous file with comments | « tools/win/new_analyze_warnings/retrieve_latest_warnings.bat ('k') | tools/win/new_analyze_warnings/warning_diff.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698