Belirli bir kod için Sonar'ı kapatma


164

Ölçülmek istemeyen belirli kod blokları için sonar ( www.sonarsource.org ) ölçümlerini kapatmak mümkün müdür ?

Buna bir örnek, Findbugs tarafından gönderilen "Yığın İzini Koru" uyarısıdır. Sunucudan ayrılırken, iletiyi yalnızca istemciye geri iletmek isteyebilirim, bu özel durum istemci tarafından bilinmiyorsa (yakaladığım JAR'a sahip olmadığı için) istisna, örneğin).

Yanıtlar:


71

Bu bir SSS . //NOSONARUyarıyı tetikleyen hatta koyabilirsiniz . @SuppressFBWarnings açıklamasını eklemeyi içeren FindBugs mekanizmasını kullanmayı tercih ederim:

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
    justification = "Why you choose to ignore it")

2
Kabul. Ancak, Sonar'ın doğru bir şekilde yorumlayıp yorumlamadığından emin değilim @SuppressFBWarnings(çarpışmalardan kaçınmak için eklendi java.lang.SuppressWarnings) ve yok sayar.
Marcel Stör

AFAIK, Sonar FindBugs kullanıyor. Eğer FindBugs bu ek açıklamaları ele alırsa, FindBugs'u Sonar üzerinden çalıştırırken neden işe yaramayacaklarını anlamıyorum. Zaten test etmek zor olmamalı.
JB Nizet

4
SSS bağlantısı eski. İşte yeni SSS
wiredniko

11
Lütfen bir SonarQube SSS sayfasına başka bağlantı verebilir misiniz? SSS yerine bir giriş formu görüyorum
Win4ster

234

SuppressWarnings ile bir sınıfa veya yönteme açıklama ekleyebilirsiniz

@java.lang.SuppressWarnings("squid:S00112")

kalamar: S00112 bu durumda bir Sonar sayı kimliğidir. Bu kimliği Sonar kullanıcı arayüzünde bulabilirsiniz. Sorunların Keşfi bölümüne gidin. Uyarılarını bastırmak istediğiniz bir sorun bulun. Kodunuzdaki kırmızı sayı kutusunda, belirli bir sorunun tanımını içeren bir Kural bağlantısı bulunur. Bunu tıkladığınızda, sayfanın üst kısmında kimliği görürsünüz.


8
Bunun belirli bir FindBugs kural kimliği ile de çalıştığını doğrulayabilirim @SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE").
bcody

19
Sorun Eclipse'in bir uyarı görüntülemesidir Unsupported @SuppressWarnings("squid:S00112"). Eclipse'i bunu yok sayacak şekilde yapılandırabilirsiniz, ancak in gibi bir yazım hatası @SuppressWarnings("uncheckedd")algılanmaz.
Ortomala Lokni

1
@SuppressWarnings ve Sonar'daki dokümanlar için docs.codescan.io/hc/en-us/articles/… adresine bakın .
Rich Dougherty

89

Kullanarak belirli uyarıları bastırmayı denemenizi öneririz @SuppressWarnings("squid:S2078") .

Birden fazla uyarıyı bastırmak için bunu şu şekilde yapabilirsiniz @SuppressWarnings({"squid:S2078", "squid:S2076"})

//NOSONARSonarQube'a belirli bir satırdaki tüm hataları yok saymasını söyleyen yorum da var .

Son olarak, kullanıcı arabirimi için uygun haklara sahipseniz, bayrağı doğrudan arabirimden yanlış pozitif olarak verebilirsiniz.

Belirli uyarıların bastırılmasını önermemin nedeni, kullanmak yerine belirli bir sorunu engellemenin daha iyi bir uygulamadır. //NOSONAR , kodunuzda yanlışlıkla bir Sonar sorununu .

Bununla ilgili daha fazla bilgiyi SSS bölümünde bulabilirsiniz.

Not: Gábor Bakos şu anda 404'lerin eski SSS'sine işaret ediyor. Bu benim için ilk google sonucu, bu yüzden aynı soruya sahip başka birine yardım etmek istiyorum

Düzenleme: 6/30/16 SonarQube artık SonarLint olarak adlandırılıyor

Kalamar numarasını nasıl bulacağınızı merak ediyorsanız. Sadece Sonar mesajına tıklayın (örn. Remove this method to simply inherit it.) Sonar sorunu genişleyecektir.

Sol altta kalamar numarası olacaktır (örn. squid:S1185Sürdürülebilirlik> Anlaşılabilirlik)

Böylece onu @SuppressWarnings("squid:S1185")


2
Ingnoe çoklu sonar küp uyarıları için teşekkürler
AlexWien

1
Arabirimde yanlış pozitif olarak işaretlemenin diğer bir sorunu, projenin herhangi bir nedenle silinip yeniden eklenmesi durumunda, ayarladığınız tüm bayrakların kaldırılacağıdır.
annedroiid

@annedroiid - Pom.xml dosyasında aynısı yapılabilirse herhangi bir yolu var mı? Burada soru
soruyorum

8

Kodunuza yardımcı olamayacağınız bir şeyse, uyarı aldığınız satırda // NOSONAR kullanın. İşe yarıyor!


4

Sonar 5.6'da kalamar numarasını bulamıyorum, bu ek açıklama da işe yarıyor:

@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})

1
squidSonar kaynaklı Java veritabanı (SonarAnalyzer Java) içindir. pmdve checkstylediğer kural depolarında.
Daniel C. Sobral
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.