Estamos usando pylint em nosso sistema de compilação. Temos um pacote python em nossa base de código que tem código descartável e gostaria de desativar todos os avisos para um módulo temporariamente para que eu possa parar de incomodar os outros desenvolvedores com essas mensagens supérfluas. Existe uma maneira fácil de obter pylint: disable
todos os avisos de um módulo?
86
PyLint tem cinco "categorias" para mensagens (das quais estou ciente).
Essas categorias eram muito óbvias no passado, mas as mensagens Pylint numeradas agora foram substituídas por nomes. Por exemplo,
C0302
é agoratoo-many-lines
. Mas o 'C' nos diz quetoo-many-lines
é uma mensagem da Convenção . Isso é confuso, porque as mensagens da Convenção frequentemente aparecem apenas como um aviso, uma vez que muitos sistemas (como o Syntastic ) parecem classificar tudo como um aviso ou um erro. No entanto, o relatório PyLint ainda divide as coisas nessas categorias, então ainda é definitivamente compatível.Sua pergunta se refere especificamente a avisos , e todos os nomes de mensagens de aviso PyLint começam com 'W'.
Foi um pouco difícil para mim rastrear isso, mas essa resposta acabou me levando à resposta. O PyLint ainda suporta a desativação de categorias inteiras de mensagens. Portanto, para desativar todos os avisos , você faria:
Isso pode ser usado na linha de comando:
Ou você pode colocá-lo em seu arquivo pylintrc:
Nota: você pode já ter a
disable
opção em seu arquivo rc, caso em que você deve adicionar o 'W' a esta lista.Ou você pode colocá-lo embutido em seu código, onde funcionará para o escopo em que está colocado:
# pylint: disable=W
Para desabilitá-lo para um arquivo inteiro, é melhor colocá-lo no início do arquivo. No entanto, mesmo no início do arquivo, descobri que ainda estava recebendo a
trailing-newlines
mensagem de aviso (tecnicamente, um aviso de convenção , mas estou chegando lá).No meu caso, eu tinha uma biblioteca escrita por alguém de muito tempo atrás. Funcionou bem, então não havia realmente necessidade de se preocupar com a convenção moderna do Python, etc. Tudo o que realmente me importava eram os erros que provavelmente quebrariam meu código.
Minha solução foi desabilitar todas as mensagens de Aviso , Convenção e Refatoração para este único arquivo colocando o seguinte comando PyLint na primeira linha:
# pylint: disable=W,C,R
Além da mensagem mencionada acima para rastrear novas linhas, isso fez exatamente o que eu precisava.
fonte
Sim, você pode especificar
# pylint: skip-file
no arquivo, mas é uma má prática desativar todos os avisos de um arquivo.Se você deseja desabilitar apenas avisos específicos, isso pode ser feito adicionando um comentário
# pylint: disable=message-name
para desabilitar a mensagem especificada para o restante do arquivo, ou pelo menos até# pylint: enable=message-name
.Exemplo:
# pylint: disable=no-member class C123: def __init__(self): self.foo_x = self.bar_x # pylint: enable=no-member class C456: def __init__(self): self.foo_x = self.bar_x
fonte
disable=locally-disabled
pode ser adicionado ao pylintrc.Outra opção é usar a
--ignore
opção de linha de comando para pular a análise de alguns arquivos.fonte
Meu caso de uso é executar
pylint *.py
para processar todos os arquivos em um diretório, exceto que desejo pular um arquivo específico.Adicionar
#pylint: skip-file
fez com que o pylint falhasseI: 8, 0: Ignoring entire file (file-ignored)
. Adicionar#pylint: disable=file-ignored
não resolve isso. Presumivelmente, é um erro global em vez de específico do arquivo.A solução foi incluir
--disable=file-ignored
nas opções de comando pylint. Demorou muito para descobrir isso; não deve haver umfile-ignored
erro ao ignorar explicitamente um arquivo.fonte
pylintrc
arquivo de configuração, não em uma opção de comando.