[clang-tools-extra] f0726ae - Refactor: Extract Class MessagePrefix (NFC)

via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 25 22:19:53 PST 2022


Author: Richard
Date: 2022-01-25T23:19:33-07:00
New Revision: f0726ae0f9fa3fc5fadec7fdc940cc2f88759001

URL: https://github.com/llvm/llvm-project/commit/f0726ae0f9fa3fc5fadec7fdc940cc2f88759001
DIFF: https://github.com/llvm/llvm-project/commit/f0726ae0f9fa3fc5fadec7fdc940cc2f88759001.diff

LOG: Refactor: Extract Class MessagePrefix (NFC)

The work is the same, the only difference is the prefix
of the strings we look for in the reference files.

Added: 
    

Modified: 
    clang-tools-extra/test/clang-tidy/check_clang_tidy.py

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
index 1a234029b60bd..d764f20ef2ecc 100755
--- a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
+++ b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
@@ -51,6 +51,21 @@ def try_run(args, raise_error=True):
   return process_output
 
 
+# This class represents the appearance of a message prefix in a file.
+class MessagePrefix:
+  def __init__(self, label):
+    self.has_message = False
+    self.prefixes = []
+    self.label = label
+
+  def check(self, file_check_suffix, input_text):
+    self.prefix = self.label + file_check_suffix
+    self.has_message = self.prefix in input_text
+    if self.has_message:
+      self.prefixes.append(self.prefix)
+    return self.has_message
+
+
 class CheckRunner:
   def __init__(self, args, extra_args):
     self.resource_dir = args.resource_dir
@@ -63,12 +78,12 @@ def __init__(self, args, extra_args):
     self.std = args.std
     self.check_suffix = args.check_suffix
     self.input_text = ''
-    self.check_fixes_prefixes = []
-    self.check_messages_prefixes = []
-    self.check_notes_prefixes = []
     self.has_check_fixes = False
     self.has_check_messages = False
     self.has_check_notes = False
+    self.fixes = MessagePrefix('CHECK-FIXES')
+    self.messages = MessagePrefix('CHECK-MESSAGES')
+    self.notes = MessagePrefix('CHECK-NOTES')
 
     file_name_with_extension = self.assume_file_name or self.input_file_name
     _, extension = os.path.splitext(file_name_with_extension)
@@ -109,38 +124,29 @@ def read_input(self):
       self.input_text = input_file.read()
 
   def get_prefixes(self):
-    for check in self.check_suffix:
-      if check and not re.match('^[A-Z0-9\\-]+$', check):
+    for suffix in self.check_suffix:
+      if suffix and not re.match('^[A-Z0-9\\-]+$', suffix):
         sys.exit('Only A..Z, 0..9 and "-" are allowed in check suffixes list,'
-                 + ' but "%s" was given' % check)
+                 + ' but "%s" was given' % suffix)
 
-      file_check_suffix = ('-' + check) if check else ''
-      check_fixes_prefix = 'CHECK-FIXES' + file_check_suffix
-      check_messages_prefix = 'CHECK-MESSAGES' + file_check_suffix
-      check_notes_prefix = 'CHECK-NOTES' + file_check_suffix
+      file_check_suffix = ('-' + suffix) if suffix else ''
 
-      has_check_fix = check_fixes_prefix in self.input_text
-      has_check_message = check_messages_prefix in self.input_text
-      has_check_note = check_notes_prefix in self.input_text
+      has_check_fix = self.fixes.check(file_check_suffix, self.input_text)
+      self.has_check_fixes = self.has_check_fixes or has_check_fix
+
+      has_check_message = self.messages.check(file_check_suffix, self.input_text)
+      self.has_check_messages = self.has_check_messages or has_check_message
+
+      has_check_note = self.notes.check(file_check_suffix, self.input_text)
+      self.has_check_notes = self.has_check_notes or has_check_note
 
       if has_check_note and has_check_message:
         sys.exit('Please use either %s or %s but not both' %
-          (check_notes_prefix, check_messages_prefix))
+          (self.notes.prefix, self.messages.prefix))
 
       if not has_check_fix and not has_check_message and not has_check_note:
         sys.exit('%s, %s or %s not found in the input' %
-          (check_fixes_prefix, check_messages_prefix, check_notes_prefix))
-
-      self.has_check_fixes = self.has_check_fixes or has_check_fix
-      self.has_check_messages = self.has_check_messages or has_check_message
-      self.has_check_notes = self.has_check_notes or has_check_note
-
-      if has_check_fix:
-        self.check_fixes_prefixes.append(check_fixes_prefix)
-      if has_check_message:
-        self.check_messages_prefixes.append(check_messages_prefix)
-      if has_check_note:
-        self.check_notes_prefixes.append(check_notes_prefix)
+          (self.fixes.prefix, self.messages.prefix, self.notes.prefix))
 
     assert self.has_check_fixes or self.has_check_messages or self.has_check_notes
 
@@ -173,7 +179,7 @@ def run_clang_tidy(self):
   def check_fixes(self):
     if self.has_check_fixes:
       try_run(['FileCheck', '-input-file=' + self.temp_file_name, self.input_file_name,
-              '-check-prefixes=' + ','.join(self.check_fixes_prefixes),
+              '-check-prefixes=' + ','.join(self.fixes.prefixes),
               '-strict-whitespace'])
 
   def check_messages(self, clang_tidy_output):
@@ -181,7 +187,7 @@ def check_messages(self, clang_tidy_output):
       messages_file = self.temp_file_name + '.msg'
       write_file(messages_file, clang_tidy_output)
       try_run(['FileCheck', '-input-file=' + messages_file, self.input_file_name,
-             '-check-prefixes=' + ','.join(self.check_messages_prefixes),
+             '-check-prefixes=' + ','.join(self.messages.prefixes),
              '-implicit-check-not={{warning|error}}:'])
 
   def check_notes(self, clang_tidy_output):
@@ -191,7 +197,7 @@ def check_notes(self, clang_tidy_output):
                          if not ("note: FIX-IT applied" in line)]
       write_file(notes_file, '\n'.join(filtered_output))
       try_run(['FileCheck', '-input-file=' + notes_file, self.input_file_name,
-             '-check-prefixes=' + ','.join(self.check_notes_prefixes),
+             '-check-prefixes=' + ','.join(self.notes.prefixes),
              '-implicit-check-not={{note|warning|error}}:'])
 
   def run(self):


        


More information about the cfe-commits mailing list