2009-10-10 29 views
5

Ich führe eine API, die einige öffentliche statische Felder veraltet hat.Kann ich CheckStyle-Beschwerden für veraltete Methoden und Klassen deaktivieren?

CheckStyle beklagt sich lautstark über diese, aber ich möchte sie lieber vollständig ignorieren, da ich mich mit dem Problem beschäftigt habe, indem ich die Felder als veraltet markiert habe.

Speziell die Bibliothek hat Konstanten für die Enumeration (public static final), aber sie sind nicht als final markiert. CheckStyle wird sich über sie beschweren, aber ich kann sie nicht einfach in das Finale ändern, ohne den Vertrag zu brechen.

Mein Plan ist, sie als veraltet zu markieren und sie später zu löschen. Wenn sie jedoch als veraltet gekennzeichnet werden, werden sie nicht aus dem CheckStyle-Bericht entfernt.

+0

Können Sie die genaue Ausgabe bereitstellen? –

Antwort

8

Ich habe zwei Optionen für Sie:

  1. unterdrücken die Warnung für jede Zeile manuell

    Dieser Ansatz ist weniger flexibel, wie Sie die Unterdrückung Konfiguration jedes Mal, wenn Sie Linien halten verschieben . Aber Sie können jedes Ereignis einzeln behandeln.

    <suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/> 
    

    Ich weiß nicht, welche Kontrolle Ihr Problem verursacht, so dass Sie YOURCHECK mit dem richtigen Namen zu ersetzen. YOURCLASS benennt die Java-Datei, die den veralteten Code enthält, aber Sie können .* einfügen, um es auf jede Datei anzuwenden. YOURLINES ist eine durch Kommas getrennte Liste von Werten, wobei jeder Wert eine Ganzzahl oder ein Bereich von Ganzzahlen ist, die durch Ganzzahl-Ganzzahl bezeichnet werden.

  2. Verwendung einen Kommentar zu raten check Warnungen zu ignorieren

    Diese Lösung, die Sie prüft, ob alle veralteten Mitglieder auf einmal deaktivieren können. Aber Sie müssen einer strengen Konvention folgen. Sie müssen einen @deprecated Kommentar zu diesen Mitgliedern (was Sie möglicherweise schon tun) an der allerletzten Stelle hinzufügen, da dieser Filter einen strikten Zeilenbereich hat.

    Diese Lösung muss in Ihrer Konfigurationsdatei geändert werden. Zuerst müssen Sie FileContentsHolder als Kind zu TreeWalker hinzufügen.

    <module name="TreeWalker"> 
        ... 
        <module name="FileContentsHolder"/> 
        ... 
    </module> 
    

    Jetzt können Sie die SuppressWithNearbyCommentFilter konfigurieren, die einen Teil des Checker Modul ist.

    <module name="Checker"> 
        ... 
        <module name="SuppressWithNearbyCommentFilter"> 
         <property name="commentFormat" value=".*deprecated.*"/> 
         <property name="checkFormat" value=".*"/> 
         <property name="influenceFormat" value="2"/> 
        </module> 
        ... 
    </module> 
    

    Wenn Sie nur bestimmte Kontrollen ignorieren entscheiden, stellen Sie die checkFormat Attribut. Oder wenn Sie einen anderen Kommentar verwenden möchten, ändern Sie das Attribut commentFormat. Aber es ist sehr wichtig, dass Sie influenceFormat auf den richtigen Wert setzen. Es teilt dem Checkstyle mit, wie viele Zeilen nach dem Kommentar diese Checks ignorieren sollen.

P. S .: Beachten Sie, dass die Eclipse-Plugin Check das FileContentsHolder Modul entfernt, wenn Sie die Konfiguration mit der Benutzeroberfläche zu ändern, so dass Sie es nicht verwenden.

+2

Das ist großartig. Perfekt! –

Verwandte Themen