diff mbox series

[ovs-dev,26/26] checkpatch: Add rule to check for hardcoded table numbers

Message ID 20240201161804.210604-27-amusil@redhat.com
State Superseded
Headers show
Series Remove most of the hardcoded table numbers | expand

Checks

Context Check Description
ovsrobot/apply-robot warning apply and check: warning
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes success github build: passed

Commit Message

Ales Musil Feb. 1, 2024, 4:18 p.m. UTC
To avoid issues with hardcoded table numbers in future add rule
into check patch. The rule is only warning because there are still
legitimate use cases and not everything can be abstracted.

Signed-off-by: Ales Musil <amusil@redhat.com>
---
 utilities/checkpatch.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)
diff mbox series

Patch

diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py
index 52d3fa845..9f7a48c7c 100755
--- a/utilities/checkpatch.py
+++ b/utilities/checkpatch.py
@@ -202,6 +202,7 @@  __regex_if_macros = re.compile(r'^ +(%s) \([\S]([\s\S]+[\S])*\) { +\\' %
                                __parenthesized_constructs)
 __regex_nonascii_characters = re.compile("[^\u0000-\u007f]")
 __regex_efgrep = re.compile(r'.*[ef]grep.*$')
+__regex_hardcoded_table = re.compile(r'(table=[0-9]+)|(resubmit\(,[0-9]+\))')
 
 skip_leading_whitespace_check = False
 skip_trailing_whitespace_check = False
@@ -371,6 +372,10 @@  def has_efgrep(line):
     """Returns TRUE if the current line contains 'egrep' or 'fgrep'."""
     return __regex_efgrep.match(line) is not None
 
+def has_hardcoded_table(line):
+    """Return TRUE if the current line contains table=<NUMBER> or
+       resubmit(,<NUMBER>)"""
+    return __regex_hardcoded_table.match(line) is not None
 
 def filter_comments(current_line, keep=False):
     """remove all of the c-style comments in a line"""
@@ -656,6 +661,13 @@  checks = [
      'check': lambda x: has_efgrep(x),
      'print':
      lambda: print_error("grep -E/-F should be used instead of egrep/fgrep")},
+
+    {'regex': r'\.at$', 'match_name': None,
+     'check': lambda x: has_hardcoded_table(x),
+     'print':
+         lambda: print_warning("Use of hardcoded table=<NUMBER> or"
+                               " resubmit=(,<NUMBER>) is discouraged in tests."
+                               " Consider using MACRO instead.")},
 ]