2012-03-28 15 views
7

Mam kilka map Hadoop i ograniczam klasy, które zastępują metody chronione. Sonar flagi z nich:Jak wyłączyć SQUID: UnusedProtectedMethod w sonarze dla klasy lub metody?

Unused protected method 
Plugin: squid Key: UnusedProtectedMethod 

Wiem, że poprawka w Sonar, który rozwiązuje ten i że w pewnym momencie moja organizacja będzie używać wersji z tą poprawką. W międzyczasie chciałbym wyłączyć ostrzeżenie. Próbowałem:

@SuppressWarnings("UnusedProtectedMethod") 

i

@SuppressWarnings("SQUID.UnusedProtectedMethod") 

bezskutecznie.

@SuppressWarnings działa dla problemów PMD, @ edu.umd.cs.findbugs.annotations.SuppressWarnings (value = "blah") działa w przypadku problemów z findbugs. Czy istnieje inny wariant problemów z kalmarami, czy też nie jest to jeszcze obsługiwane?

Odpowiedz

3

Zastosowanie

@SuppressWarnings("squid:UnusedProtectedMethod") 

Zobacz także SonarQube Java Plugin FAQ - SuprressWarnings

ten został wdrożony w SonarQube Java wersja wtyczki 2.8.

+0

To tylko kwestia przypadku? –

+1

Tak, składnia jest nieco inna niż podane przykłady. Myślę też, że nie zostało to zaimplementowane, gdy zadałeś pytanie w 2012 roku. –

+1

(a) Wygląda na to, że twój link jest uszkodzony ... (b) Jak rozumiem, niektóre sprawdzanie Squid jest na poziomie bajtode, gdzie ta adnotacja wygrała ' t pojawiają się; czy Sonar jest na tyle sprytny, aby w takich przypadkach nadal odbierać adnotację ze źródła? To dlatego FindBugs wprowadził 'SuppressFBWarnings' z zachowaniem w czasie wykonywania, chociaż wątpię, aby' SuppressFBWarnings' działał w przypadku naruszeń innych niż FindBugs (np. Squid). – Kidburla

3

Znalazłem, że Squid obsługuje tylko "wszystko". Z kałamarnicy źródła wtyczki, w SuppressWarningsAnnotationUtils.java:

private static final String VALUE = "\"all\""; 
... 


    public static boolean isSuppressAllWarnings(DetailAST ast) { 
    DetailAST suppressWarningsAnnotation = getSuppressWarningsAnnotation(ast); 
    if (suppressWarningsAnnotation != null) { 
     DetailAST warningHolder = findWarningsHolder(suppressWarningsAnnotation); 
     for (DetailAST warning = warningHolder.findFirstToken(TokenTypes.EXPR); warning != null; warning = warning.getNextSibling()) { 
     if (warning.getType() == TokenTypes.EXPR) { 
      DetailAST fChild = warning.getFirstChild(); 
      if (fChild.getType() == TokenTypes.STRING_LITERAL) { 
      String text = warning.getFirstChild().getText(); 
      if (VALUE.equals(text)) { 
       return true; 
      } 
      } 
     } 
     } 
    } 
    return false; 
    } 

tam dyskusja tutaj: Support the annotation "@SuppressWarnings" at class and method level

+2

A to nawet nie działa niezawodnie na Sonarze 3.4.1. Ta kwestia polegająca na tym, że nie można wyeliminować fałszywych trafień * w kodzie * (zamiast za pośrednictwem interfejsu graficznego WWW firmy Sonar), uniemożliwia nam korzystanie z kalmarów w środowisku korporacyjnym. –

Powiązane problemy