2009-10-10 15 views
5

Posiadam interfejs API, który wycofał niektóre publiczne pola statyczne.Czy mogę wyłączyć skargi CheckStyle na nieaktualne metody i zajęcia?

CheckStyle głośno narzeka na te informacje, ale wolałbym, aby zostały całkowicie zignorowane, ponieważ rozwiązałem problem, zaznaczając pola jako przestarzałe.

W szczególności biblioteka ma stałe do wyliczenia (publiczne finał statyczny), ale nie są one oznaczone jako ostateczne. CheckStyle będzie na nie narzekać, ale nie mogę po prostu zmienić ich na ostateczne bez zerwania umowy.

Mój plan to oznaczenie ich jako przestarzałych, a następnie usunięcie ich później. Ale oznaczenie ich jako przestarzałe nie usuwa ich z raportu CheckStyle.

+0

Czy możesz podać dokładny wynik? –

Odpowiedz

8

mam dwie opcje:

  1. tłumić ostrzeżenie dla każdej linii ręcznie

    Takie podejście jest mniej elastyczny, jak trzeba zachować konfigurację tłumiące za każdym razem przenoszą linie . Ale możesz obsłużyć każde zdarzenie indywidualnie.

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

    Nie wiem, który test jest przyczyną problemu, więc musisz zastąpić nazwę YOURCHECK odpowiednią nazwą. YOURCLASS nadaje nazwę pliku java, który zawiera wycofany kod, ale można wstawić .*, aby zastosować go do każdego pliku. YOURLINES jest rozdzielaną przecinkami listą wartości, gdzie każda wartość jest liczbą całkowitą lub zakresem liczb całkowitych oznaczonych przez liczbę całkowitą całkowitą.

  2. użycie komentarz doradzić Checkstyle ignorować ostrzeżenia

    Takie rozwiązanie pozwala na wyłączenie kontroli dla wszystkich nieaktualnych członków naraz. Ale musisz przestrzegać ścisłej konwencji. Musisz dodać komentarz @deprecated do tych członków (co prawdopodobnie już robisz) na ostatniej pozycji, ponieważ ten filtr ma ścisły zakres linii.

    /** 
    * @deprecated I don't like this anymore. 
    */ 
    public static String EXAMPLE = "example"; 
    

    Rozwiązania te wymagają zmiany w pliku konfiguracyjnym. Najpierw musisz dodać FileContentsHolder jako dziecko do TreeWalker.

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

    Teraz można skonfigurować SuppressWithNearbyCommentFilter która jest częścią modułu Checker.

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

    Jeśli zdecydujesz się zignorować tylko określone kontrole, dostosuj atrybut checkFormat. Lub jeśli chcesz użyć innego komentarza, zmień atrybut commentFormat. Ale bardzo ważne jest, aby ustawić influenceFormat na odpowiednią wartość. Informuje o tym, ile linii po komentarzu należy zignorować.

P.S .: Zauważ, że plugin Eclipse Checkstyle usuwa moduł FileContentsHolder, po zmianie konfiguracji z interfejsem użytkownika, więc nie należy go używać.

+2

To jest świetne. Idealny! –

Powiązane problemy