J'utilise pydev où j'ai mis en place pylint ... Le problème est que même dans les commentaires, pylint signale des avertissements. Je cherchais à désactiver toute forme de vérification dans une ligne ou un commentaire de bloc . De plus, je souhaite suivre la convention de dénomination camelCase au lieu des caractères de soulignement pour les variables et les arguments dans mon code . Y a-t-il un moyen de spécifier de telles une règle sans insérer mon code avec aucun pylint: désactiver les commentaires?
Vous pouvez désactiver globalement les avertissements d’une certaine classe en utilisant
pylint --disable=W1234
ou en utilisant un fichier de configuration spécial PyLint
pylint --rcfile=/path/to/config.file
Un exemple de fichier de configuration est donné ci-dessous:
[MESSAGES CONTROL]
# C0111 Missing docstring
# I0011 Warning locally suppressed using disable-msg
# I0012 Warning locally suppressed using disable-msg
# W0704 Except doesn't do anything Used when an except clause does nothing but "pass" and there is no "else" clause
# W0142 Used * or * magic* Used when a function or method is called using *args or **kwargs to dispatch arguments.
# W0212 Access to a protected member %s of a client class
# W0232 Class has no __init__ method Used when a class has no __init__ method, neither its parent classes.
# W0613 Unused argument %r Used when a function or method argument is not used.
# W0702 No exception's type specified Used when an except clause doesn't specify exceptions type to catch.
# R0201 Method could be a function
# W0614 Unused import XYZ from wildcard import
# R0914 Too many local variables
# R0912 Too many branches
# R0915 Too many statements
# R0913 Too many arguments
# R0904 Too many public methods
disable=C0111,I0011,I0012,W0704,W0142,W0212,W0232,W0613,W0702,R0201,W0614,R0914,R0912,R0915,R0913,R0904,R0801
Voir la documentation sur le site dédié de Pylint .
Comme indiqué par cfedermann, vous pouvez spécifier la désactivation des messages dans un fichier ~/.pylintrc
(notez que vous pouvez générer un fichier de raccord à l'aide de pylint --generate-rcfile
si vous ne souhaitez pas utiliser de commentaires en ligne.
Vous verrez également dans le fichier généré, dans la section [BASIC], des options telles que "method-rgx", "function-rgx", etc. .
Bien qu’il s’agisse d’une question ancienne, il convient de mentionner qu’on peut maintenant spécifier leur regex propre pour faire correspondre les noms .
Ensuite, votre expression rationnelle correspondant à l'affaire Camel serait quelque chose comme:
[a-z][a-zA-Z0-9]{2,30}$
Voici l'exemple de contrôle personnalisé , et un autre exemple plus facile à comprendre .
Je faisais face à un problème similaire à vous. Le code suivant est ma solution. J'ai personnalisé un vérificateur pour interdire l'importation datetime.now
. Vous pouvez le prendre pour référence:
class TestChecker(BaseChecker):
"""
find the check type in the following url:
https://github.com/PyCQA/pylint/blob/63eb8c4663a77d0caf2a842b716e4161f9763a16/pylint/checkers/typecheck.py
"""
__implements__ = IAstroidChecker
name = 'test-checker'
priority = -1
msgs = {
'W0001': (
'You should not import "%s"',
'import-datetime-returns',
'Should not import datetime'
),
}
def __init__(self, linter):
super().__init__(linter)
# I use original pylint's ImportsChecker as a property
# from import **
self.forbidden_import = ['datetime.datetime.now']
self.forbidden_import_from = ['datetime.now', 'now']
self.forbidden_import_attribute = ['datetime.now', 'now', 'datetime.datetime.now']
#the function will be rewrited
def visit_importfrom(self, node):
names = [name for name, _alias in node.names]
for item in names:
for check in self.forbidden_import_from:
if item == check:
self.add_message('W0001', node=node, args=item)
def visit_import(self, node):
names = [name for name, _ in node.names]
for item in names:
for check in self.forbidden_import:
if check == item:
self.add_message('W0001', node=node, args=item)
def visit_attribute(self, node):
for check_attr in self.forbidden_import_attribute:
if check_attr == node.as_string():
self.add_message('W0001', node=node, args=check_attr)
def register(linter):
linter.register_checker(TestChecker(linter))
Je personnalise pylint
de deux manières.
La première façon est où vous
La deuxième méthode consiste à créer un script wrapper qui appelle pylint. Dans le script wrapper, vous avez un tas de lignes qui ressemblent à ceci:
pylint \
${options_here} \
--disable=xyz1 \
--disable=xyz_2 \
${more_options} \
--disable=xyz_N \
--disable=abc \
$@
Actuellement, j'utilise l'approche de script wrapper car je souhaite que les problèmes soient triés par numéro de ligne et j'ai utilisé des scripts Shell pour obtenir cet ordre de tri.