Czy można wyłączyć pomiary sonarem ( www.sonarsource.org ) dla określonych bloków kodu, których nie chce się mierzyć?
Przykładem jest ostrzeżenie „Zachowaj śledzenie stosu”, które generuje Findbugs. Opuszczając serwer, mógłbym chcieć tylko przekazać wiadomość z powrotem do klienta, nie uwzględniając rzeczywistego wyjątku, który właśnie złapałem, jeśli ten wyjątek nie jest klientowi (ponieważ klient nie ma pliku JAR, w którym to na przykład wyjątek).
@SuppressFBWarnings
(dodaje, aby uniknąć kolizjijava.lang.SuppressWarnings
), a także go ignoruje.Możesz dodać adnotację do klasy lub metody za pomocą SuppressWarnings
squid: S00112 w tym przypadku jest identyfikatorem wydania sonaru. Możesz znaleźć ten identyfikator w interfejsie użytkownika Sonar. Przejdź do analizy problemów. Znajdź problem, dla którego chcesz pominąć ostrzeżenia. W czerwonym polu numeru w Twoim kodzie znajduje się link do reguły z definicją danego problemu. Po kliknięciu zobaczysz identyfikator u góry strony.
źródło
@SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE")
.Unsupported @SuppressWarnings("squid:S00112")
. Możesz skonfigurować Eclipse, aby to ignorował, ale wtedy literówka, taka jak in@SuppressWarnings("uncheckedd")
, nie zostanie wykryta.Zalecam spróbować stłumić określone ostrzeżenia za pomocą
@SuppressWarnings("squid:S2078")
.Aby wyłączyć wiele ostrzeżeń, możesz to zrobić w ten sposób
@SuppressWarnings({"squid:S2078", "squid:S2076"})
Istnieje również
//NOSONAR
komentarz, który mówi SonarQube, aby ignorował wszystkie błędy dla określonej linii.Wreszcie, jeśli masz odpowiednie uprawnienia do interfejsu użytkownika, możesz wysłać flagę jako fałszywy alarm bezpośrednio z interfejsu.
Powodem, dla którego zalecam pomijanie określonych ostrzeżeń, jest to, że lepszą praktyką jest blokowanie określonego problemu zamiast używania
//NOSONAR
i ryzyka przypadkowego wkradnięcia się problemu z Sonarem do kodu.Możesz przeczytać więcej na ten temat w FAQ
Uwaga: Gábor Bakos wskazuje na starsze FAQ, które teraz są 404. To jest pierwszy wynik w Google, więc chcę pomóc każdemu, kto może mieć to samo pytanie
Edycja: 6/30/16 SonarQube nazywa się teraz SonarLint
Jeśli zastanawiasz się, jak znaleźć numer kałamarnicy. Wystarczy kliknąć wiadomość Sonar (np.
Remove this method to simply inherit it.
), A problem z sonarem się rozwinie.W lewym dolnym rogu będzie miał numer kałamarnicy (np.
squid:S1185
Konserwowalność> Zrozumiałość)Więc możesz to stłumić przez
@SuppressWarnings("squid:S1185")
źródło
Użyj // NOSONAR w linii, w której otrzymasz ostrzeżenie, jeśli jest to coś, w czym nie możesz pomóc swojemu kodowi. To działa!
źródło
Nie mogę znaleźć numeru kałamarnicy w sonarze 5.6, przy czym ta adnotacja również działa:
źródło
squid
dotyczy bazy danych Java pochodzącej z Sonar (SonarAnalyzer Java).pmd
icheckstyle
znajdują się w innych repozytoriach reguł.