changeset b58f6afe14c5 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=b58f6afe14c5
description:
        style: Add support for a style ignore list and ignore ext/

        There are some directories within the repository where we don't want
        to enforce our coding style. Specifically, we don't want the style
        hooks to warn whenever we update external code in the ext/ directory.

diffstat:

 util/style.py |  36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diffs (67 lines):

diff -r 62c95c428a3d -r b58f6afe14c5 util/style.py
--- a/util/style.py     Tue Aug 26 10:14:07 2014 -0400
+++ b/util/style.py     Tue Aug 26 10:14:30 2014 -0400
@@ -67,6 +67,37 @@
 
 format_types = set(('C', 'C++'))
 
+
+def re_ignore(expr):
+    """Helper function to create regular expression ignore file
+    matcher functions"""
+
+    rex = re.compile(expr)
+    def match_re(fname):
+        return rex.match(fname)
+    return match_re
+
+# This list contains a list of functions that are called to determine
+# if a file should be excluded from the style matching rules or
+# not. The functions are called with the file name relative to the
+# repository root (without a leading slash) as their argument. A file
+# is excluded if any function in the list returns true.
+style_ignores = [
+    # Ignore external projects as they are unlikely to follow the gem5
+    # coding convention.
+    re_ignore("^ext/"),
+]
+
+def check_ignores(fname):
+    """Check if a file name matches any of the ignore rules"""
+
+    for rule in style_ignores:
+        if rule(fname):
+            return True
+
+    return False
+
+
 def modified_regions(old_data, new_data):
     regions = Regions()
     beg = None
@@ -408,6 +439,7 @@
 
     opt_fix_white = opts.get('fix_white', False)
     opt_all = opts.get('all', False)
+    opt_no_ignore = opts.get('no_ignore', False)
     ui = MercurialUI(hgui, hgui.verbose, opt_fix_white)
 
     def prompt(name, func, regions=all_regions):
@@ -447,6 +479,9 @@
     whitespace = Whitespace(ui)
     sorted_includes = SortedIncludes(ui)
     for fname, mod_regions in files:
+        if not opt_no_ignore and check_ignores(fname):
+            continue
+
         fpath = joinpath(repo.root, fname)
 
         if whitespace.apply(fpath, prompt, mod_regions):
@@ -515,6 +550,7 @@
             ('w', 'fix-white', False, _("automatically fix whitespace")),
             ('a', 'all', False,
              _("include clean files and unmodified parts of modified files")),
+            ('', 'no-ignore', False, _("ignore the style ignore list")),
             ] +  commands.walkopts,
         _('hg m5style [-a] [FILE]...')),
     '^m5format' :
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to