[llvm] [Github][CI] Introduce `doc8` to `code-lint-helper.py` (PR #172123)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Dec 13 05:02:58 PST 2025
================
@@ -289,8 +291,56 @@ def _clean_clang_tidy_output(self, output: str) -> str:
return ""
+class Doc8LintHelper(LintHelper):
+ name: Final = "doc8"
+ friendly_name: Final = "documentation linter"
-ALL_LINTERS = (ClangTidyLintHelper(),)
+ def instructions(self, files_to_lint: Iterable[str], args: LintArgs) -> str:
+ return f"doc8 -q {' '.join(files_to_lint)}"
+
+ def filter_changed_files(self, changed_files: Iterable[str]) -> Sequence[str]:
+ filtered_files = []
+ for filepath in changed_files:
+ _, ext = os.path.splitext(filepath)
+ if ext != ".rst":
+ continue
+ if not filepath.startswith("clang-tools-extra/docs/clang-tidy/"):
+ continue
+ if os.path.exists(filepath):
+ filtered_files.append(filepath)
+ return filtered_files
+
+ def run_linter_tool(self, files_to_lint: Iterable[str], args: LintArgs) -> str:
+ if not files_to_lint:
+ return ""
+
+ doc8_cmd = [args.doc8_binary, "-q"]
+ doc8_cmd.extend(files_to_lint)
+
+ if args.verbose:
+ print(f"Running doc8: {' '.join(doc8_cmd)}")
+
+ proc = subprocess.run(
+ doc8_cmd,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ text=True,
+ check=False,
+ )
+
+ if proc.returncode == 0:
+ return ""
+
+ if output := proc.stdout.strip():
+ return output
+
+ if error_output := proc.stderr.strip():
+ return error_output
----------------
zeyi2 wrote:
Thanks for reviewing! I've updated the error handling logic to combine both stdout and stderr content.
https://github.com/llvm/llvm-project/pull/172123
More information about the llvm-commits
mailing list