pw_presubmit: Check paths for inclusivity

Check paths for inclusive language.

Bug: 386
Change-Id: Ia84d46faaa4ffdea003a3421e6a4f71a9e825ee0
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/46840
Pigweed-Auto-Submit: Rob Mohr <mohrr@google.com>
Reviewed-by: Joe Ethier <jethier@google.com>
Commit-Queue: Rob Mohr <mohrr@google.com>
diff --git a/pw_presubmit/py/pw_presubmit/inclusive_language.py b/pw_presubmit/py/pw_presubmit/inclusive_language.py
index 863607d..a751954 100644
--- a/pw_presubmit/py/pw_presubmit/inclusive_language.py
+++ b/pw_presubmit/py/pw_presubmit/inclusive_language.py
@@ -13,10 +13,10 @@
 # the License.
 """Inclusive language presubmit check."""
 
-import collections
+import dataclasses
 from pathlib import Path
 import re
-from typing import Dict, List
+from typing import Dict, List, Union
 
 from . import presubmit
 
@@ -81,16 +81,37 @@
 _ENABLE = 'inclusive-language: enable'
 
 
+@dataclasses.dataclass
+class PathMatch:
+    word: str
+
+    def __repr__(self):
+        return f'Found non-inclusive word "{self.word}" in file path'
+
+
+@dataclasses.dataclass
+class LineMatch:
+    line: int
+    word: str
+
+    def __repr__(self):
+        return f'Found non-inclusive word "{self.word}" on line {self.line}'
+
+
 def inclusive_language(
     ctx: presubmit.PresubmitContext,
     words_regex=NON_INCLUSIVE_WORDS_REGEX,
 ):
     """Presubmit check that ensures files do not contain banned words."""
 
-    Match = collections.namedtuple('Match', 'line word')
-    found_words: Dict[Path, List[Match]] = {}
+    found_words: Dict[Path, List[Union[PathMatch, LineMatch]]] = {}
 
     for path in ctx.paths:
+        match = words_regex.search(str(path.relative_to(ctx.root)))
+        if match:
+            found_words.setdefault(path, [])
+            found_words[path].append(PathMatch(match.group(0)))
+
         try:
             with open(path, 'r') as ins:
                 enabled = True
@@ -110,7 +131,8 @@
 
                         if match:
                             found_words.setdefault(path, [])
-                            found_words[path].append(Match(i, match.group(0)))
+                            found_words[path].append(
+                                LineMatch(i, match.group(0)))
 
                     # Not using 'continue' so this line always executes.
                     prev = line
@@ -123,9 +145,7 @@
         print('=' * 40)
         print(path)
         for match in matches:
-            print(
-                f'Found non-inclusive word "{match.word}" on line {match.line}'
-            )
+            print(match)
 
     if found_words:
         print()