सोनार को कुछ कोड के लिए बंद करना


164

क्या कोड के विशिष्ट ब्लॉकों के लिए सोनार ( www.sonarsource.org ) माप को बंद करना संभव है , जिसे कोई भी मापना नहीं चाहता है?

एक उदाहरण "प्रिजर्व स्टैक ट्रेस" चेतावनी है जो फाइंडबग्स आउटपुट देता है। सर्वर से बाहर निकलते समय, मैं अच्छी तरह से केवल ग्राहक को संदेश वापस भेजना चाहता हूं, न कि वास्तविक अपवाद को शामिल करना, जिसे मैंने अभी पकड़ा है, यदि वह अपवाद ग्राहक के लिए अज्ञात है (क्योंकि ग्राहक के पास जार नहीं है जिसमें अपवाद उदाहरण के लिए निहित था)।

जवाबों:


71

यह एक FAQ है । आप //NOSONARचेतावनी को ट्रिगर करने वाली लाइन पर रख सकते हैं । मैं FindBugs तंत्र का उपयोग करना पसंद करता हूं, हालांकि @SuppressFBWarnings एनोटेशन को जोड़ने में शामिल हैं:

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

2
माना। हालांकि, मुझे यकीन नहीं है कि अगर सोनार सही ढंग से व्याख्या करता है @SuppressFBWarnings(साथ संघर्ष से बचने के लिए जोड़ा गया है java.lang.SuppressWarnings) और इसे अनदेखा भी करता है।
मार्सेल स्टो

AFAIK, सोनार FindBugs का उपयोग करता है। इसलिए यदि फाइंडबग्स इन एनोटेशन को हैंडल करता है, तो मैं नहीं देखता कि सोनार के माध्यम से फाइंडबग्स चलाते समय वे काम क्यों नहीं करेंगे। वैसे भी परीक्षण करना कठिन नहीं होना चाहिए।
जेबी निज़ेट

4
FAQ लिंक पुराना है। यहाँ नया FAQ है
wiredniko

11
क्या आप सोनारक्यूब FAQ के अन्य लिंक प्रदान कर सकते हैं? मैं अक्सर पूछे जाने वाले प्रश्न
Win4ster

233

आप सप्रेसवर्निंग्स के साथ एक वर्ग या विधि का एनोटेट कर सकते हैं

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

स्क्विड: इस मामले में S00112 एक सोनार इश्यू आईडी है। आप इस आईडी को सोनार यूआई में पा सकते हैं। मुद्दे पर जाएँ ड्रिल। एक ऐसा मुद्दा ढूंढें जिस पर आप चेतावनियों को दबाना चाहते हैं। आपके कोड में लाल अंक बॉक्स में दिए गए मुद्दे की परिभाषा के साथ एक नियम लिंक है। एक बार जब आप क्लिक करते हैं कि आप पृष्ठ के शीर्ष पर आईडी देखेंगे।


8
मैं यह पुष्टि कर सकता हूं कि यह एक विशिष्ट FindBugs नियम-आईडी के साथ भी काम करता है, उदाहरण के लिए @SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE")
11

19
समस्या यह है कि ग्रहण एक चेतावनी प्रदर्शित करता है Unsupported @SuppressWarnings("squid:S00112")। आप इसे अनदेखा करने के लिए ग्रहण को कॉन्फ़िगर कर सकते हैं लेकिन फिर एक टाइपो जैसे कि @SuppressWarnings("uncheckedd")पता नहीं लगाया जाएगा।
ओरतोमला लोकनी

1
@SuppressWarnings और सोनार पर डॉक्स के लिए docs.codescan.io/hc/en-us/articles/… देखें ।
रिच डौगी

89

मेरा सुझाव है कि आप का उपयोग करके विशिष्ट चेतावनियों को दबाने की कोशिश करें @SuppressWarnings("squid:S2078")

कई चेतावनियों को दबाने के लिए आप इसे इस तरह कर सकते हैं @SuppressWarnings({"squid:S2078", "squid:S2076"})

एक //NOSONARटिप्पणी भी है जो सोनारक्यूब को एक विशिष्ट पंक्ति के लिए सभी त्रुटियों को अनदेखा करने के लिए कहती है।

अंत में यदि आपके पास उपयोगकर्ता इंटरफ़ेस के लिए उचित अधिकार हैं तो आप सीधे इंटरफ़ेस से एक झूठे सकारात्मक के रूप में एक ध्वज जारी कर सकते हैं।

विशिष्ट चेतावनियों के दमन की सलाह देने का कारण यह है कि किसी विशेष मुद्दे को उपयोग करने के बजाय ब्लॉक करना बेहतर है //NOSONARऔर दुर्घटना में आपके कोड में रेंगने वाले सोनार मुद्दे को जोखिम में डालना।

आप एफएक्यू में इसके बारे में अधिक पढ़ सकते हैं

नोट: गैबोर बकोस पुराने एफएक्यू की ओर इशारा कर रहा है जो अब 404 है। यह मेरे लिए पहला Google परिणाम है इसलिए मैं किसी और की मदद करना चाहता हूं जो एक ही प्रश्न हो सकता है

संपादित करें: 6/30/16 सोनारक्यूब को अब सोनारलिंट कहा जाता है

मामले में आप सोच रहे हैं कि स्क्वीड नंबर कैसे खोजा जाए। बस सोनार संदेश (उदा। Remove this method to simply inherit it.) पर क्लिक करें और सोनार समस्या का विस्तार होगा।

नीचे बाईं ओर इसमें स्क्वीड नंबर होगा (उदा। squid:S1185रखरखाव> अंडरस्टेबिलिटी)

तो फिर आप इसे दबा सकते हैं @SuppressWarnings("squid:S1185")


2
कई सोनार क्यूब चेतावनियों को भड़काने के संकेत के लिए धन्यवाद
AlexWien

1
इंटरफ़ेस पर एक झूठी सकारात्मक के रूप में चिह्नित करने के साथ दूसरा मुद्दा यह है कि यदि किसी भी कारण से परियोजना को हटा दिया गया है और फिर से जोड़ा गया है, तो आपके द्वारा सेट किए गए सभी झंडे चले जाएंगे।
एनड्रोइड 6

@annedroiid - अगर pom.xml फ़ाइल में समान किया जा सकता है तो क्या कोई तरीका है? मैंने यहां सवाल उठाया है: stackoverflow.com/questions/57789832/…
Pra_A

8

उपयोग करें // NOSONAR उस रेखा पर जिसे आप चेतावनी देते हैं यदि यह ऐसा कुछ है जिसके साथ आप अपने कोड की मदद नहीं कर सकते। यह काम करता हैं!


4

मैं सोनार 5.6 में स्क्वीड नंबर नहीं खोज पा रहा हूं, इसके साथ ही एनोटेशन भी काम करता है:

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

1
squidसोनार-खट्टा जावा डेटाबेस (SonarAnalyzer Java) के लिए है। pmdऔर checkstyleअन्य नियम रिपॉजिटरी पर हैं।
डेनियल सी। सोबराल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.