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

Reply via email to