(self, fname, cmd=None)
| 80 | return LintResult(text=errors, lines=linenums) |
| 81 | |
| 82 | def lint(self, fname, cmd=None): |
| 83 | rel_fname = self.get_rel_fname(fname) |
| 84 | try: |
| 85 | code = Path(fname).read_text(encoding=self.encoding, errors="replace") |
| 86 | except OSError as err: |
| 87 | print(f"Unable to read {fname}: {err}") |
| 88 | return |
| 89 | |
| 90 | if cmd: |
| 91 | cmd = cmd.strip() |
| 92 | if not cmd: |
| 93 | lang = filename_to_lang(fname) |
| 94 | if not lang: |
| 95 | return |
| 96 | if self.all_lint_cmd: |
| 97 | cmd = self.all_lint_cmd |
| 98 | else: |
| 99 | cmd = self.languages.get(lang) |
| 100 | |
| 101 | if callable(cmd): |
| 102 | lintres = cmd(fname, rel_fname, code) |
| 103 | elif cmd: |
| 104 | lintres = self.run_cmd(cmd, rel_fname, code) |
| 105 | else: |
| 106 | lintres = basic_lint(rel_fname, code) |
| 107 | |
| 108 | if not lintres: |
| 109 | return |
| 110 | |
| 111 | res = "# Fix any errors below, if possible.\n\n" |
| 112 | res += lintres.text |
| 113 | res += "\n" |
| 114 | res += tree_context(rel_fname, code, lintres.lines) |
| 115 | |
| 116 | return res |
| 117 | |
| 118 | def py_lint(self, fname, rel_fname, code): |
| 119 | basic_res = basic_lint(rel_fname, code) |
no test coverage detected