Confira o uso do supressionCommentFilter em http://checkstyle.sourceforge.net/config_filters.html#SuppressionCommentFilter . Você precisará adicionar o módulo ao seu checkstyle.xml
<module name="SuppressionCommentFilter"/>
e é configurável. Assim, você pode adicionar comentários ao seu código para desativar o estilo de verificação (em vários níveis) e, em seguida, reativar novamente usando os comentários no seu código. Por exemplo
//CHECKSTYLE:OFF
public void someMethod(String arg1, String arg2, String arg3, String arg4) {
//CHECKSTYLE:ON
Ou melhor ainda, use esta versão mais aprimorada:
<module name="SuppressionCommentFilter">
<property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
<property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
<property name="checkFormat" value="$1"/>
</module>
que permite desativar verificações específicas para linhas de código específicas:
//CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions
catch (Exception e)
//CHECKSTYLE.ON: IllegalCatch
* Nota: você também precisará adicionar o FileContentsHolder
:
<module name="FileContentsHolder"/>
Veja também
<module name="SuppressionFilter">
<property name="file" value="docs/suppressions.xml"/>
</module>
debaixo de SuppressionFilter
seção na mesma página, que permite desativar verificações individuais de recursos correspondentes ao padrão.
Portanto, se você possui seu checkstyle.xml:
<module name="ParameterNumber">
<property name="id" value="maxParameterNumber"/>
<property name="max" value="3"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
Você pode desativá-lo no seu arquivo xml de supressão com:
<suppress id="maxParameterNumber" files="YourCode.java"/>
Outro método, agora disponível no Checkstyle 5.7, é suprimir violações por meio da @SuppressWarnings
anotação java. Para fazer isso, você precisará adicionar dois novos módulos ( SuppressWarningsFilter
e SuppressWarningsHolder
) no seu arquivo de configuração:
<module name="Checker">
...
<module name="SuppressWarningsFilter" />
<module name="TreeWalker">
...
<module name="SuppressWarningsHolder" />
</module>
</module>
Em seguida, dentro do seu código, você pode fazer o seguinte:
@SuppressWarnings("checkstyle:methodlength")
public void someLongMethod() throws Exception {
ou, para várias supressões:
@SuppressWarnings({"checkstyle:executablestatementcount", "checkstyle:methodlength"})
public void someLongMethod() throws Exception {
NB: O checkstyle:
prefixo " " é opcional (mas recomendado). De acordo com os documentos, o nome do parâmetro deve estar em letras minúsculas, mas a prática indica que qualquer caso funciona.
//CHECKSTYLE.OFF:
e depois esquecer de ativá-lo novamente, ele permanecerá desmarcado apenas no arquivo que contém//CHECKSTYLE.OFF:
ou em todos os arquivos processados posteriormente também?@SuppressWarnings("checkstyle:VariableDeclarationUsageDistance")
funcionou tão bem para mim quanto o equivalente em minúsculas.TreeWalker
eFileContentHolder
não é mais necessário (disponível).Se você preferir usar anotações para silenciar seletivamente as regras, agora é possível usar a
@SuppressWarnings
anotação, começando com o Checkstyle 5.7 (e suportado pelo Checkstyle Maven Plugin 2.12+).Primeiro, no seu
checkstyle.xml
, adicione oSuppressWarningsHolder
módulo aoTreeWalker
:Em seguida, ative
SuppressWarningsFilter
lá (como um irmãoTreeWalker
):Agora você pode anotar, por exemplo, o método que deseja excluir de uma determinada regra do Checkstyle:
O
checkstyle:
prefixo no argumento para@SuppressWarnings
é opcional, mas eu gosto disso como um lembrete de onde esse aviso veio. O nome da regra deve estar em minúsculas.Por fim, se você estiver usando o Eclipse, ele reclamará sobre o argumento desconhecido:
Você pode desativar este aviso do Eclipse nas preferências, se desejar:
fonte
O que também funciona bem é o SuppressWithNearbyCommentFilter, que usa comentários individuais para suprimir eventos de auditoria.
Por exemplo
Para configurar um filtro para que CHECKSTYLE IGNORE verifique NEXT var LINES, evite acionar auditorias para a verificação fornecida da linha atual e das próximas linhas var (para um total de var + 1 linhas):
http://checkstyle.sourceforge.net/config.html
fonte
CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES?
qual tornará o comando ignore mais legível. (Você poderá usar "CHECKSTYLE IGNORE, verifique a próxima linha 1" e "CHECKSTYLE IGNORE, verifique a próxima linha 3").CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINE
também funciona para mim (combina ambosline
elines
).Todas as respostas referentes a SuppressWarningsFilter está faltando um detalhe importante. Você só pode usar o ID com todas as letras minúsculas se ele estiver definido como tal no seu checkstyle-config.xml. Caso contrário, você deve usar o nome do módulo original.
Por exemplo, se no meu checkstyle-config.xml eu tenho:
Eu não posso usar:
No entanto, devo usar:
Para que a primeira sintaxe funcione, o checkstyle-config.xml deve ter:
Foi isso que funcionou para mim, pelo menos na versão 6.17 do CheckStyle.
fonte
Tive dificuldade com as respostas acima, potencialmente porque defini os avisos checkStyle como erros. O que funcionou foi SuppressionFilter: http://checkstyle.sourceforge.net/config_filters.html#SuppressionFilter
A desvantagem disso é que o intervalo de linhas é armazenado em um arquivo suppresssions.xml separado, portanto, um desenvolvedor desconhecido pode não fazer a conexão imediatamente.
fonte
Para configurar um filtro para suprimir eventos de auditoria entre um comentário contendo a linha BEGIN GENERATED CODE e um comentário contendo a linha END GENERATED CODE:
Ver mais
fonte
Você pode experimentar https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathFilter
Você pode configurá-lo como:
Gere supressões do Xpath usando a CLI com a opção -g e especifique a saída usando a opção -o.
https://checkstyle.sourceforge.io/cmdline.html#Command_line_usage
Aqui está um trecho de formiga que o ajudará a configurar sua geração automática de supressões Checkstyle:
O suppressions-xpath.xml é especificado como a fonte de supressões do Xpath na configuração de regras do Checkstyle. No snippet acima, estou carregando o caminho de classe Checkstyle de um arquivo cs.cp em uma propriedade. Você pode optar por especificar o caminho de classe diretamente.
Ou você pode usar groovy no Maven (ou Ant) para fazer o mesmo:
A única desvantagem do uso de supressões do Xpath - além das verificações que ele não suporta - é se você tiver um código como o seguinte:
A supressão do Xpath gerada nesse caso não é ingerida pelo Checkstyle e o verificador falha com uma exceção:
É recomendável gerar supressões do Xpath quando você corrige todas as outras violações e deseja suprimir o restante. Não permitirá que você selecione instâncias específicas no código para suprimir. No entanto, você pode escolher supressões do arquivo gerado para fazer exatamente isso.
Para especificar uma regra, arquivo ou mensagem de erro específica, o SuppressionXpathSingleFilter seria mais adequado.
https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathSingleFilter
fonte