Überprüfen Sie die Verwendung des supressionCommentFilter unter http://checkstyle.sourceforge.net/config_filters.html#SuppressionCommentFilter . Sie müssen das Modul zu Ihrer checkstyle.xml hinzufügen
<module name="SuppressionCommentFilter"/>
und es ist konfigurierbar. Auf diese Weise können Sie Ihrem Code Kommentare hinzufügen, um den Prüfstil (auf verschiedenen Ebenen) zu deaktivieren und dann mithilfe von Kommentaren in Ihrem Code wieder einzuschalten. Z.B
//CHECKSTYLE:OFF
public void someMethod(String arg1, String arg2, String arg3, String arg4) {
//CHECKSTYLE:ON
Oder noch besser, verwenden Sie diese optimierte Version:
<module name="SuppressionCommentFilter">
<property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
<property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
<property name="checkFormat" value="$1"/>
</module>
Hiermit können Sie bestimmte Überprüfungen für bestimmte Codezeilen deaktivieren:
//CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions
catch (Exception e)
//CHECKSTYLE.ON: IllegalCatch
* Hinweis: Sie müssen außerdem Folgendes hinzufügen FileContentsHolder
:
<module name="FileContentsHolder"/>
Siehe auch
<module name="SuppressionFilter">
<property name="file" value="docs/suppressions.xml"/>
</module>
Klicken Sie im SuppressionFilter
Abschnitt auf derselben Seite auf, in dem Sie einzelne Überprüfungen für musterangepasste Ressourcen deaktivieren können.
Also, wenn Sie in Ihrer checkstyle.xml haben:
<module name="ParameterNumber">
<property name="id" value="maxParameterNumber"/>
<property name="max" value="3"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
Sie können es in Ihrer Unterdrückungs-XML-Datei deaktivieren mit:
<suppress id="maxParameterNumber" files="YourCode.java"/>
Eine andere Methode, die jetzt in Checkstyle 5.7 verfügbar ist, besteht darin, Verstöße über die @SuppressWarnings
Java-Annotation zu unterdrücken . Dazu müssen Sie Ihrer Konfigurationsdatei zwei neue Module ( SuppressWarningsFilter
und SuppressWarningsHolder
) hinzufügen :
<module name="Checker">
...
<module name="SuppressWarningsFilter" />
<module name="TreeWalker">
...
<module name="SuppressWarningsHolder" />
</module>
</module>
Dann können Sie in Ihrem Code Folgendes tun:
@SuppressWarnings("checkstyle:methodlength")
public void someLongMethod() throws Exception {
oder für mehrere Unterdrückungen:
@SuppressWarnings({"checkstyle:executablestatementcount", "checkstyle:methodlength"})
public void someLongMethod() throws Exception {
NB: Das checkstyle:
Präfix " " ist optional (wird jedoch empfohlen). Gemäß den Dokumenten muss der Parametername in Kleinbuchstaben angegeben werden, aber die Praxis zeigt, dass jeder Fall funktioniert.
//CHECKSTYLE.OFF:
und dann vergessen, es wieder einzuschalten, bleibt es dann nur in der Datei deaktiviert, die//CHECKSTYLE.OFF:
oder alle anschließend verarbeiteten Dateien enthält?@SuppressWarnings("checkstyle:VariableDeclarationUsageDistance")
funktionierte für mich genauso gut wie das Kleinbuchstabenäquivalent.TreeWalker
, und derFileContentHolder
ist nicht mehr notwendig (verfügbar).Wenn Sie Anmerkungen bevorzugen, um Regeln selektiv zum Schweigen zu bringen, ist dies jetzt mithilfe der
@SuppressWarnings
Anmerkung möglich, beginnend mit Checkstyle 5.7 (und unterstützt durch das Checkstyle Maven Plugin 2.12+).Fügen Sie zunächst in Ihrem Modul Folgendes
checkstyle.xml
hinzu :SuppressWarningsHolder
TreeWalker
Als nächstes aktivieren Sie das
SuppressWarningsFilter
dort (als Geschwister zuTreeWalker
):Jetzt können Sie zB die Methode kommentieren, die Sie von einer bestimmten Checkstyle-Regel ausschließen möchten:
Das
checkstyle:
Präfix im Argument to@SuppressWarnings
ist optional, aber ich mag es als Erinnerung daran, woher diese Warnung stammt. Der Regelname muss klein geschrieben sein.Wenn Sie Eclipse verwenden, wird es sich darüber beschweren, dass das Argument ihm unbekannt ist:
Sie können diese Eclipse-Warnung in den Einstellungen deaktivieren, wenn Sie möchten:
quelle
Was auch gut funktioniert, ist der SuppressWithNearbyCommentFilter, der einzelne Kommentare verwendet, um Überwachungsereignisse zu unterdrücken.
Beispielsweise
So konfigurieren Sie einen Filter so, dass die Prüfung CHECKSTYLE IGNORE FOR NEXT var LINES das Auslösen von Audits für die angegebene Prüfung für die aktuelle Zeile und die nächsten var-Zeilen (für insgesamt var + 1 Zeilen) vermeidet:
http://checkstyle.sourceforge.net/config.html
quelle
CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES?
den Befehl "Ignorieren" lesbarer macht. (Sie können "CHECKSTYLE IGNORE-Prüfung für nächste Zeile" und "CHECKSTYLE IGNORE-Prüfung für nächste 3 Zeilen" verwenden.)CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINE
funktioniert auch für mich (es passt zu beidenline
undlines
).Bei jeder Antwort auf SuppressWarningsFilter fehlt ein wichtiges Detail. Sie können die ID nur in Kleinbuchstaben verwenden, wenn sie in Ihrer checkstyle-config.xml als solche definiert ist. Wenn nicht, müssen Sie den ursprünglichen Modulnamen verwenden.
Zum Beispiel, wenn ich in meiner checkstyle-config.xml habe:
Ich kann nicht benutzen:
Ich muss jedoch verwenden:
Damit die erste Syntax funktioniert, sollte die Datei checkstyle-config.xml Folgendes enthalten:
Dies hat bei mir funktioniert, zumindest in der CheckStyle-Version 6.17.
quelle
Ich hatte Schwierigkeiten mit den obigen Antworten, möglicherweise weil ich die checkStyle-Warnungen als Fehler festgelegt habe. Was funktionierte, war SuppressionFilter: http://checkstyle.sourceforge.net/config_filters.html#SuppressionFilter
Dies hat den Nachteil, dass der Zeilenbereich in einer separaten Datei suppresssions.xml gespeichert wird, sodass ein unbekannter Entwickler die Verbindung möglicherweise nicht sofort herstellt.
quelle
So konfigurieren Sie einen Filter zum Unterdrücken von Überwachungsereignissen zwischen einem Kommentar mit der Zeile BEGIN GENERATED CODE und einem Kommentar mit der Zeile END GENERATED CODE:
Mehr sehen
quelle
Sie können https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathFilter ausprobieren
Generieren Sie Xpath-Unterdrückungen mithilfe der CLI mit der Option -g. Wählen Sie dann das Unterdrückungselement aus, das für die Zeile spezifisch ist, die Sie unterdrücken möchten. Speichern Sie das in einer Unterdrückungsdatei und geben Sie diesen Dateipfad im obigen SuppressionXpathFilter-Element an.
https://checkstyle.sourceforge.io/cmdline.html#Command_line_usage
Wenn Sie ant verwenden, können Sie diesen Beitrag als ant-Aufgabe bezeichnen, um eine Xpath-Datei für Unterdrückungen zu generieren.
https://github.com/checkstyle/checkstyle/issues/6934#issuecomment-522289083
In diesem Thread erfahren Sie, wie Sie den Filter verwenden:
https://groups.google.com/forum/m/#!topic/checkstyle/F_f6R_Qk1EM
quelle