aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-12-22 09:34:55 -0500
committerNick Mathewson <nickm@torproject.org>2014-12-22 09:34:55 -0500
commit8b532a8c81577701c1af75d4641f7acb1ce5fc91 (patch)
tree3adc270cd1a6ddb2ae09764a0ce1f1f46576b754 /scripts
parent1c05dfd0b6ae9303d1f815a4d610655f32c0cc50 (diff)
downloadtor-8b532a8c81577701c1af75d4641f7acb1ce5fc91.tar.gz
tor-8b532a8c81577701c1af75d4641f7acb1ce5fc91.zip
Short python script to lint the changes files
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/maint/lintChanges.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/scripts/maint/lintChanges.py b/scripts/maint/lintChanges.py
new file mode 100755
index 0000000000..43f2f21685
--- /dev/null
+++ b/scripts/maint/lintChanges.py
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+
+import sys
+import re
+
+
+
+def lintfile(fname):
+ have_warned = []
+ def warn(s):
+ if not have_warned:
+ have_warned.append(1)
+ print fname,":"
+ print "\t",s
+
+ m = re.search(r'(\d{3,})', fname)
+ if m:
+ bugnum = m.group(1)
+ else:
+ bugnum = None
+
+ with open(fname) as f:
+ contents = f.read()
+
+ if bugnum and bugnum not in contents:
+ warn("bug number %s does not appear"%bugnum)
+
+ lines = contents.split("\n")
+ isBug = ("bug" in lines[0] or "fix" in lines[0])
+
+ contents = " ".join(contents.split())
+
+ if isBug and not re.search(r'(\d+)', contents):
+ warn("bugfix does not mention a number")
+ elif isBug and not re.search(r'Fixes bug (\d+)', contents):
+ warn("bugfix does not say 'Fixes bug XXX'")
+
+ if re.search(r'[bB]ug (\d+)', contents) and not re.search(r'Bugfix on ', contents):
+ warn("bugfix does not say 'bugfix on X.Y.Z'")
+
+
+if __name__=='__main__':
+ for fname in sys.argv[1:]:
+ if fname.endswith("~"):
+ continue
+ lintfile(fname)