forked from Checkmk/checkmk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.pylintrc
128 lines (124 loc) · 6.46 KB
/
.pylintrc
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
[MASTER]
# Setup the Python paths needed for our tests. This is a bit tricky due to the
# fact that we want to be able to run pylint with and without the --rcfile
# option. Pylint offers pylint.config.PYLINTRC to get the path to the
# automatically found config file, but this doesn't take --rcfile into account.
# So we have to fall back to a slightly hacky method discussed in the post
# https://mail.python.org/pipermail/code-quality/2016-June/000781.html,
# accessing pylint's innards. Not nice, but there is not much we can do about
# this until pylint offers the API requested in the post above. Furthermore,
# note that layout/indentation doesn't work too well in the hook below.
init-hook=
import inspect, os, sys
config_file = inspect.stack()[2][0].f_locals["linter"].config_file
tests_dir2 = os.path.join(os.path.dirname(config_file), "tests")
tests_dir3 = os.path.join(os.path.dirname(config_file), "tests-py3")
tests_dir = tests_dir3 if sys.version.split('.')[0] == '3' else tests_dir2
sys.path.insert(0, os.environ.get("TEST_PATH", tests_dir))
import conftest
load-plugins=testlib.pylint_cmk,testlib.pylint_checker_localization
jobs=0
# TODO: Why do we need persistence?
persistent=yes
extension-pkg-whitelist=rrdtool,_ldap,netifaces,pymssql
[MESSAGES CONTROL]
disable=
#---------------------------------------------------------------------------
# We should really enable this, there could be some real exceptions waiting
# to be thrown. But some work is needed first to sprinkle abc annotations
# through our code and fix a few obscure places.
abstract-method,
#---------------------------------------------------------------------------
# Enabling this would be very desirable, it vastly improves readability and
# it might even be necessary for tools like mypy. Fixing this involves some
# amount of relatively easy work, especially if we want to avoid code
# duplication (introduce new classes, combine methods, etc.)
attribute-defined-outside-init,
#---------------------------------------------------------------------------
# Enabling these warnings would be nice, they are mostly a sign of sloppy
# programming practice. In some cases, they can even hide bugs.
broad-except,
#---------------------------------------------------------------------------
# Enabling this would enhance readability quite a bit and it might even
# uncover bugs. Fixing this is not rocket science, just some work.
inconsistent-return-statements,
#---------------------------------------------------------------------------
# Enabling this would be nice, but not crucial. Nevertheless, this would
# improve readability and involve some cleanups in our class hierarchy, so
# we should do this some day.
protected-access,
#---------------------------------------------------------------------------
# Enabling this would be nice, but not crucial. At the moment, we have quite
# a few violations, so we postpone fixing this.
no-self-use,
#---------------------------------------------------------------------------
# Enabling this would be nice, but not crucial. At the moment, we have quite
# a few violations (about 220 in roughly 40 modules), so we postpone fixing
# this. Note that due to our arcane use of types, we need to be very careful
# when fixing these warnings!
len-as-condition,
#---------------------------------------------------------------------------
# Enabling this would be nice, but not crucial. At the moment, we have quite
# a few violations, so we postpone fixing this. When we do it eventually, we
# probably want to use "include-naming-hint=yes" in the BASIC section.
invalid-name,
#---------------------------------------------------------------------------
# Enable these would improve readability, but currently there are quite a
# few places to fix.
wrong-import-position,
#---------------------------------------------------------------------------
# Enabling this would be nice, but not crucial. At the moment, we have quite
# a few violations, so we postpone fixing this.
unused-argument,
#---------------------------------------------------------------------------
# Alas, these maintenance/security nightmares are still part of our base
# "technology"... :-/ Nevertheless, reducing their usage is a very worthy
# goal.
eval-used,
exec-used,
global-statement,
#---------------------------------------------------------------------------
# Enabling these would be nice, but given the current state of affairs
# (gigantic modules with deeply nested humungous functions/methods), this
# will be a non-trivial amount of work.
too-few-public-methods,
too-many-arguments,
too-many-boolean-expressions,
too-many-instance-attributes,
too-many-lines,
too-many-locals,
too-many-nested-blocks,
too-many-public-methods,
too-many-return-statements,
too-many-statements,
#---------------------------------------------------------------------------
# Enabling these would be nice, but at the moment pylint is a bit too dumb,
# so it stumbles over e.g. initialization with None. It ignores control
# flow, so even adding e.g. isinstance() guards wouldn't help, see:
# https://github.com/PyCQA/pylint/issues/1498.
unsubscriptable-object,
unsupported-membership-test,
#---------------------------------------------------------------------------
# Our code is still full of FIXMEs/XXXs/TODOs, perhaps fixing or removing
# them might be a good idea some day...
fixme,
#---------------------------------------------------------------------------
# The warnigns below will probably fixed by YAPF.
bad-continuation,
bad-whitespace,
line-too-long,
#---------------------------------------------------------------------------
# We are light years away from enabling this...
missing-docstring,
#---------------------------------------------------------------------------
# Enabling the two spelling-related checks increases pylints runtime from
# 11 min to 40 min, so we better keep those disabled for normal runs.
# NOTE: If we want to enable one of these checks, we need to add pyenchant
# to our dev dependencies.
wrong-spelling-in-comment,
wrong-spelling-in-docstring,
[REPORTS]
output-format=cmk_colorized
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
[FORMAT]
max-line-length=100