================
@@ -289,8 +291,61 @@ def _clean_clang_tidy_output(self, output: str) -> str:
return ""
+class Doc8LintHelper(LintHelper):
+ name: Final = "doc8"
+ friendly_name: Final = "RST 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]:
+ return list(filter(self._should_lint_file, changed_files))
+
+ def _should_lint_file(self, filepath: str) -> bool:
+ return (
+ os.path.splitext(filepath)[1] == ".rst"
+ and filepath.startswith("clang-tools-extra/docs/clang-tidy/")
+ and os.path.exists(filepath)
+ )
+
+ 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 ""
+
+ parts: List[str] = []
+ if output := proc.stdout.strip():
+ parts.append(output)
+ if "D001" in output or "Line too long" in output:
+ parts.append(
+ "Note: documentation lines should be no more than 79
characters wide."
----------------
zeyi2 wrote:
Fixed now, should be ready for review.
https://github.com/llvm/llvm-project/pull/172123
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits