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

Side by Side Diff: tools/metrics/histograms/find_unmapped_histograms.py

Issue 2245263004: Add --csv argument to find_unmapped_histograms.py (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Scans the Chromium source for histograms that are absent from histograms.xml. 5 """Scans the Chromium source for histograms that are absent from histograms.xml.
6 6
7 This is a heuristic scan, so a clean run of this script does not guarantee that 7 This is a heuristic scan, so a clean run of this script does not guarantee that
8 all histograms in the Chromium source are properly mapped. Notably, field 8 all histograms in the Chromium source are properly mapped. Notably, field
9 trials are entirely ignored by this script. 9 trials are entirely ignored by this script.
10 10
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 282
283 Args: 283 Args:
284 name: The string to hash (a histogram name). 284 name: The string to hash (a histogram name).
285 285
286 Returns: 286 Returns:
287 Histogram hash as a string representing a hex number (with leading 0x). 287 Histogram hash as a string representing a hex number (with leading 0x).
288 """ 288 """
289 return '0x' + hashlib.md5(name).hexdigest()[:16] 289 return '0x' + hashlib.md5(name).hexdigest()[:16]
290 290
291 291
292 def output_csv(unmapped_histograms, location_map):
293 for histogram in sorted(unmapped_histograms):
294 (filename, line_number) = location_map[histogram].split(':', 1)
Ilya Sherman 2016/08/17 22:09:24 Hmm, is it really necessary to include the max-spl
295 print '%s,%s,%s,%s' % (filename, line_number, histogram,
296 hashHistogramName(histogram))
297
298
299 def output_log(unmapped_histograms, location_map, verbose):
300 if len(unmapped_histograms):
301 logging.info('')
302 logging.info('')
303 logging.info('Histograms in Chromium but not in XML files:')
304 logging.info('-------------------------------------------------')
305 for histogram in sorted(unmapped_histograms):
306 if verbose:
307 logging.info('%s: %s - %s', location_map[histogram], histogram,
308 hashHistogramName(histogram))
309 else:
310 logging.info(' %s - %s', histogram, hashHistogramName(histogram))
311 else:
312 logging.info('Success! No unmapped histograms found.')
313
314
292 def main(): 315 def main():
293 # Find default paths. 316 # Find default paths.
294 default_root = path_util.GetInputFile('/') 317 default_root = path_util.GetInputFile('/')
295 default_histograms_path = path_util.GetInputFile( 318 default_histograms_path = path_util.GetInputFile(
296 'tools/metrics/histograms/histograms.xml') 319 'tools/metrics/histograms/histograms.xml')
297 default_extra_histograms_path = path_util.GetInputFile( 320 default_extra_histograms_path = path_util.GetInputFile(
298 'tools/histograms/histograms.xml') 321 'tools/histograms/histograms.xml')
299 322
300 # Parse command line options 323 # Parse command line options
301 parser = optparse.OptionParser() 324 parser = optparse.OptionParser()
302 parser.add_option( 325 parser.add_option(
303 '--root-directory', dest='root_directory', default=default_root, 326 '--root-directory', dest='root_directory', default=default_root,
304 help='scan within DIRECTORY for histograms [optional, defaults to "%s"]' % 327 help='scan within DIRECTORY for histograms [optional, defaults to "%s"]' %
305 default_root, 328 default_root,
306 metavar='DIRECTORY') 329 metavar='DIRECTORY')
307 parser.add_option( 330 parser.add_option(
308 '--histograms-file', dest='histograms_file_location', 331 '--histograms-file', dest='histograms_file_location',
309 default=default_histograms_path, 332 default=default_histograms_path,
310 help='read histogram definitions from FILE (relative to --root-directory) ' 333 help='read histogram definitions from FILE (relative to --root-directory) '
311 '[optional, defaults to "%s"]' % default_histograms_path, 334 '[optional, defaults to "%s"]' % default_histograms_path,
312 metavar='FILE') 335 metavar='FILE')
313 parser.add_option( 336 parser.add_option(
314 '--exrta_histograms-file', dest='extra_histograms_file_location', 337 '--exrta_histograms-file', dest='extra_histograms_file_location',
315 default=default_extra_histograms_path, 338 default=default_extra_histograms_path,
316 help='read additional histogram definitions from FILE (relative to ' 339 help='read additional histogram definitions from FILE (relative to '
317 '--root-directory) [optional, defaults to "%s"]' % 340 '--root-directory) [optional, defaults to "%s"]' %
318 default_extra_histograms_path, 341 default_extra_histograms_path,
319 metavar='FILE') 342 metavar='FILE')
320 parser.add_option( 343 parser.add_option(
344 '--csv', action='store_true', dest='csv', default=False,
Ilya Sherman 2016/08/17 22:09:24 nit: Let's name this variable 'output_as_csv' rath
345 help=(
346 'output as csv for ease of parsing ' +
347 '[optional, defaults to %default]'))
348 parser.add_option(
321 '--verbose', action='store_true', dest='verbose', default=False, 349 '--verbose', action='store_true', dest='verbose', default=False,
322 help=( 350 help=(
323 'print file position information with histograms ' + 351 'print file position information with histograms ' +
324 '[optional, defaults to %default]')) 352 '[optional, defaults to %default]'))
325 353
326 (options, args) = parser.parse_args() 354 (options, args) = parser.parse_args()
327 if args: 355 if args:
328 parser.print_help() 356 parser.print_help()
329 sys.exit(1) 357 sys.exit(1)
330 358
331 logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO) 359 logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
332 360
333 try: 361 try:
334 os.chdir(options.root_directory) 362 os.chdir(options.root_directory)
335 except EnvironmentError as e: 363 except EnvironmentError as e:
336 logging.error("Could not change to root directory: %s", e) 364 logging.error("Could not change to root directory: %s", e)
337 sys.exit(1) 365 sys.exit(1)
338 chromium_histograms, location_map = readChromiumHistograms() 366 chromium_histograms, location_map = readChromiumHistograms()
339 xml_histograms = readXmlHistograms(options.histograms_file_location) 367 xml_histograms = readXmlHistograms(options.histograms_file_location)
340 unmapped_histograms = chromium_histograms - xml_histograms 368 unmapped_histograms = chromium_histograms - xml_histograms
341 369
342 if os.path.isfile(options.extra_histograms_file_location): 370 if os.path.isfile(options.extra_histograms_file_location):
343 xml_histograms2 = readXmlHistograms(options.extra_histograms_file_location) 371 xml_histograms2 = readXmlHistograms(options.extra_histograms_file_location)
344 unmapped_histograms -= xml_histograms2 372 unmapped_histograms -= xml_histograms2
345 else: 373 else:
346 logging.warning('No such file: %s', options.extra_histograms_file_location) 374 logging.warning('No such file: %s', options.extra_histograms_file_location)
347 375
348 if len(unmapped_histograms): 376 if options.csv:
349 logging.info('') 377 output_csv(unmapped_histograms, location_map)
350 logging.info('')
351 logging.info('Histograms in Chromium but not in XML files:')
352 logging.info('-------------------------------------------------')
353 for histogram in sorted(unmapped_histograms):
354 if options.verbose:
355 logging.info('%s: %s - %s', location_map[histogram], histogram,
356 hashHistogramName(histogram))
357 else:
358 logging.info(' %s - %s', histogram, hashHistogramName(histogram))
359 else: 378 else:
360 logging.info('Success! No unmapped histograms found.') 379 output_log(unmapped_histograms, location_map, options.verbose)
361 380
362 381
363 if __name__ == '__main__': 382 if __name__ == '__main__':
364 main() 383 main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698