From f1eebb8f371cf2703ca1d4096f974d037938ece8 Mon Sep 17 00:00:00 2001 From: Kevin Yap Date: Fri, 6 Feb 2015 15:03:45 -0800 Subject: [PATCH 1/2] Order list of linted files by frequency Since it makes more sense for .rs files to appear at the top of the list of linted files and "other" files to appear at the end, this commit moves the "other" count outside of the `file_counts` dictionary and sorts the remaining "interesting" files by decreasing frequency. --- src/etc/tidy.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/etc/tidy.py b/src/etc/tidy.py index fd3309dce12c..5caa0c90f1b5 100644 --- a/src/etc/tidy.py +++ b/src/etc/tidy.py @@ -66,20 +66,22 @@ src_dir = sys.argv[1] try: count_lines = 0 count_non_blank_lines = 0 + count_other_linted_files = 0 interesting_files = ['.rs', '.py', '.js', '.sh', '.c', '.h'] file_counts = {ext: 0 for ext in interesting_files} - file_counts['other'] = 0 def update_counts(current_name): global file_counts + global count_other_linted_files + _, ext = os.path.splitext(current_name) - if ext in file_counts: + if ext in interesting_files: file_counts[ext] += 1 else: - file_counts['other'] += 1 + count_other_linted_files += 1 all_paths = set() @@ -196,10 +198,11 @@ except UnicodeDecodeError as e: report_err("UTF-8 decoding error " + str(e)) print -for ext in file_counts: - print "* linted " + str(file_counts[ext]) + " " + ext + " files" -print "* total lines of code: " + str(count_lines) -print "* total non-blank lines of code: " + str(count_non_blank_lines) +for ext in sorted(file_counts, key=file_counts.get, reverse=True): + print "* linted {} {} files".format(file_counts[ext], ext) +print "* linted {} other files".format(count_other_linted_files) +print "* total lines of code: {}".format(count_lines) +print "* total non-blank lines of code: {}".format(count_non_blank_lines) print sys.exit(err) From 956969162dd199682c16f40e9b124acc853e3992 Mon Sep 17 00:00:00 2001 From: Kevin Yap Date: Sat, 7 Feb 2015 01:11:33 -0800 Subject: [PATCH 2/2] Refactor code in tidy.py - Replace wildcard import with explicit import of `check_license` - Move more logic outside of the `try` block. - Group all helper functions together. - Define `interesting_exts` and `uninteresting_files` at start of file (with the rest of the constant declarations). --- src/etc/tidy.py | 77 +++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/src/etc/tidy.py b/src/etc/tidy.py index 5caa0c90f1b5..c524fae7f0a4 100644 --- a/src/etc/tidy.py +++ b/src/etc/tidy.py @@ -13,7 +13,7 @@ import fileinput import subprocess import re import os -from licenseck import * +from licenseck import check_license import snapshot err = 0 @@ -22,13 +22,8 @@ cr_flag = "ignore-tidy-cr" tab_flag = "ignore-tidy-tab" linelength_flag = "ignore-tidy-linelength" -# Be careful to support Python 2.4, 2.6, and 3.x here! -config_proc = subprocess.Popen(["git", "config", "core.autocrlf"], - stdout=subprocess.PIPE) -result = config_proc.communicate()[0] - -true = "true".encode('utf8') -autocrlf = result.strip() == true if result is not None else False +interesting_files = ['.rs', '.py', '.js', '.sh', '.c', '.h'] +uninteresting_files = ['miniz.c', 'jquery', 'rust_android_dummy'] def report_error_name_no(name, no, s): @@ -51,6 +46,34 @@ def do_license_check(name, contents): if not check_license(name, contents): report_error_name_no(name, 1, "incorrect license") + +def update_counts(current_name): + global file_counts + global count_other_linted_files + + _, ext = os.path.splitext(current_name) + + if ext in interesting_files: + file_counts[ext] += 1 + else: + count_other_linted_files += 1 + + +def interesting_file(f): + if any(x in f for x in uninteresting_files): + return False + + return any(os.path.splitext(f)[1] == ext for ext in interesting_files) + + +# Be careful to support Python 2.4, 2.6, and 3.x here! +config_proc = subprocess.Popen(["git", "config", "core.autocrlf"], + stdout=subprocess.PIPE) +result = config_proc.communicate()[0] + +true = "true".encode('utf8') +autocrlf = result.strip() == true if result is not None else False + current_name = "" current_contents = "" check_tab = True @@ -63,30 +86,16 @@ if len(sys.argv) < 2: src_dir = sys.argv[1] +count_lines = 0 +count_non_blank_lines = 0 +count_other_linted_files = 0 + +file_counts = {ext: 0 for ext in interesting_files} + +all_paths = set() + try: - count_lines = 0 - count_non_blank_lines = 0 - count_other_linted_files = 0 - - interesting_files = ['.rs', '.py', '.js', '.sh', '.c', '.h'] - - file_counts = {ext: 0 for ext in interesting_files} - - def update_counts(current_name): - global file_counts - global count_other_linted_files - - _, ext = os.path.splitext(current_name) - - if ext in interesting_files: - file_counts[ext] += 1 - else: - count_other_linted_files += 1 - - all_paths = set() - for (dirpath, dirnames, filenames) in os.walk(src_dir): - # Skip some third-party directories skippable_dirs = { 'src/jemalloc', @@ -105,14 +114,6 @@ try: if any(d in dirpath for d in skippable_dirs): continue - def interesting_file(f): - if "miniz.c" in f \ - or "jquery" in f \ - or "rust_android_dummy" in f: - return False - - return any(os.path.splitext(f)[1] == ext for ext in interesting_files) - file_names = [os.path.join(dirpath, f) for f in filenames if interesting_file(f) and not f.endswith("_gen.rs")