Jason Lowe-Power has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/12147
Change subject: util: Update style checker
......................................................................
util: Update style checker
Add checks for python future print statements and licenses.
Change-Id: I56c00f88482d182202f111803d662391c2476a95
Signed-off-by: Jason Lowe-Power <ja...@lowepower.com>
---
M util/style/verifiers.py
1 file changed, 73 insertions(+), 1 deletion(-)
diff --git a/util/style/verifiers.py b/util/style/verifiers.py
index 89247dc..283341e 100644
--- a/util/style/verifiers.py
+++ b/util/style/verifiers.py
@@ -44,6 +44,8 @@
# Steve Reinhardt
# Andreas Sandberg
+from __future__ import print_function
+
from abc import ABCMeta, abstractmethod
from difflib import SequenceMatcher
import inspect
@@ -150,7 +152,7 @@
try:
f = file(filename, mode)
except OSError, msg:
- print 'could not open file %s: %s' % (filename, msg)
+ print('could not open file %s: %s' % (filename, msg))
return None
return f
@@ -460,6 +462,76 @@
"comparisons with false/False.\n")
return line
+class TextVerifier(Verifier):
+ """Verifies that some text is present in a file
+
+ Used for tests like license and python3 print functions.
+ Subclasses should define a "text" class variable which contains a
list
+ of text to search for.
+ """
+
+ def check(self, filename, regions=all_regions, fobj=None,
silent=False):
+ close = False
+ if fobj is None:
+ fobj = self.open(filename, 'r')
+ close = True
+
+ lang = lang_type(filename)
+ assert lang in self.languages
+
+ errors = 0
+ for line in self.text:
+ found = fobj.read().find(line.strip())
+ errors += 1 if found == -1 else 0
+
+ if close:
+ fobj.close()
+
+ if errors:
+ self.ui.write("Missing {} in {}\n"
+ .format(self.test_name, filename))
+
+ return errors
+
+class LicenseVerifier(TextVerifier):
+ languages = set(('C', 'C++', 'swig', 'python', 'asm', 'isa', 'scons',
+ 'make', 'dts'))
+ test_name = 'license'
+ opt_name = 'license'
+
+ text = [
+ "Redistribution and use in source and binary forms, with or without"
+ ]
+
+ def fix(self, filename, regions=all_regions):
+ self.ui.write("Warning: cannot automatically add license.\n")
+
+class PythonPrintVerifier(TextVerifier):
+ languages = set(('python',))
+ test_name = 'python print function'
+ opt_name = 'python'
+
+ text = ["from __future__ import print_function"]
+
+ def fix(self, filename, regions=all_regions):
+ self.ui.write("Warning: cannot automatically fix missing
import.\n")
+
+ def check(self, filename, regions=all_regions, fobj=None,
silent=False):
+ close = False
+ if fobj is None:
+ fobj = self.open(filename, 'r')
+ close = True
+
+ # Only need to run this if "print" appears in the file
+ # This is conservative since it also searches comments
+ if fobj.read().find('print') != -1:
+ fobj.seek(0)
+ return super(PythonPrintVerifier, self).check(filename,
regions,
+ fobj, silent)
+
+ if close:
+ fobj.close()
+
def is_verifier(cls):
"""Determine if a class is a Verifier that can be instantiated"""
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/12147
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I56c00f88482d182202f111803d662391c2476a95
Gerrit-Change-Number: 12147
Gerrit-PatchSet: 1
Gerrit-Owner: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev