¿Se puede personalizar la comprobación de errores de Pylint?

Estoy usando pydev donde he configurado pylint. El problema es que incluso dentro de los comentarios, pylint informa advertencias. Estaba buscando deshabilitar cualquier tipo de verificación dentro de cualquier línea o un comentario de bloque. Además, deseo seguir la convención de nomenclatura de camelCase en lugar de guiones bajos para variables y argumentos en mi código. ¿Hay alguna forma de especificar dicha regla sin insertar mi código con ningún pylint: deshabilitar comentarios?

Puede deshabilitar globalmente las advertencias de una determinada clase usando

pylint --disable=W1234 

o usando un archivo de configuración especial de PyLint

 pylint --rcfile=/path/to/config.file 

A continuación se muestra un archivo de configuración de muestra:

 [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 

Consulte la documentación en el sitio dedicado de Pylint .

Como dijo cfedermann, puede especificar los mensajes que se deshabilitarán en un archivo ~/.pylintrc (observe que puede generar un archivo de resguardo utilizando pylint --generate-rcfile si no desea usar comentarios en línea.

También verá en el archivo generado, en la sección [BÁSICO], opciones como “method-rgx”, “function-rgx”, etc., que puede configurar como desee para admitir el estilo de estuches de camello en lugar del estilo de subrayado de pep8 .

Aunque esta es una pregunta antigua, debe mencionarse que ahora puede especificar su propia expresión regular para hacer coincidir con los nombres .

Entonces su expresión regular para emparejar el caso del camello sería algo como:

 [az][a-zA-Z0-9]{2,30}$ 

Aquí está el ejemplo de verificación personalizado , y otro ejemplo más fácil de entender .

Me enfrentaba a un problema similar a ti. El siguiente código es mi solución. Personalicé una ficha para prohibir la importación de datetime.now . Puedes tomarlo como referencia :

 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)) 

Hay dos formas de personalizar pylint .

Usando un archivo de configuración

La primera forma es donde tu

  • llame a pylint para generar un archivo de configuración de plantilla
  • entonces usted adapta el archivo de configuración a sus necesidades / deseos
  • luego coloca el archivo de configuración en la ubicación predeterminada del archivo de configuración de pylint o siempre llama a pylint y especifica la ruta del archivo de configuración

Usando un script contenedor

La segunda forma es cuando creas un script de envoltura que llama pylint y en el script de envoltura tienes un montón de líneas que parecen:

 pylint \ ${options_here} \ --disable=xyz1 \ --disable=xyz_2 \ ${more_options} \ --disable=xyz_N \ --disable=abc \ $@ 

Actualmente estoy usando el enfoque de script de envoltura porque quiero que los problemas se ordenen por número de línea e hice algunos scripts de shell para obtener ese orden de clasificación.