forked from DonJayamanne/pythonVSCode
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathlinter.py
51 lines (45 loc) · 1.27 KB
/
linter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import subprocess
import sys
linter_settings = {
"pylint": {
"args": ["--reports=n", "--output-format=json"],
},
"flake8": {
"args": ["--format", "%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s"],
},
"bandit": {
"args": [
"-f",
"custom",
"--msg-template",
"{line},{col},{severity},{test_id}:{msg}",
"-n",
"-1",
],
},
"mypy": {"args": []},
"prospector": {
"args": ["--absolute-paths", "--output-format=json"],
},
"pycodestyle": {
"args": ["--format", "%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s"],
},
"pydocstyle": {
"args": [],
},
"pylama": {"args": ["--format=parsable"]},
}
def main():
invoke = sys.argv[1]
if invoke == "-m":
linter = sys.argv[2]
args = [sys.executable, "-m", linter] + linter_settings[linter]["args"] + sys.argv[3:]
else:
linter = sys.argv[2]
args = [sys.argv[3]] + linter_settings[linter]["args"] + sys.argv[4:]
if hasattr(subprocess, "run"):
subprocess.run(args, encoding="utf-8", stdout=sys.stdout, stderr=sys.stderr)
else:
subprocess.call(args, stdout=sys.stdout, stderr=sys.stderr)
if __name__ == "__main__":
main()