चेकस्टाइल, पीएमडी, फाइंडबग्स के लिए सोनारक्यूब रिप्लेसमेंट है?


105

हम खरोंच से एक वेब परियोजना पर काम कर रहे हैं और निम्नलिखित स्थिर कोड विश्लेषण उपकरण देख रहे हैं।

  • कन्वेंशन (चेकस्टाइल)
  • खराब व्यवहार (PMD)
  • संभावित कीड़े (FindBugs)

प्रोजेक्ट मावेन पर बनाया गया है। उद्देश्य के लिए कई उपकरणों का उपयोग करने के बजाय, मैं एक ही लचीला समाधान देख रहा था और सोनारक्यूब में आया था।

क्या यह सच है कि हम सोनारक्यूब के साथ चेकस्टाइल, पीएमडी और फाइंडबग्स से परिणाम प्राप्त कर सकते हैं?

जवाबों:


99

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

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

इसके अलावा, सोनार दृश्य रिपोर्ट, "डैशबोर्ड" शैली उत्पन्न करता है। जिससे इसे समझ पाना बहुत आसान हो जाता है। जेनकिन्स में सोनार के साथ, आप पिछले कुछ हफ्तों और महीनों में कोड बेस की गुणवत्ता पर किए गए काम के प्रभावों को डेवलपर्स और आपके प्रबंधन को दिखा पाएंगे।


मैं भू-क्षेत्र परियोजनाओं के संदर्भ में इन लाभों से सहमत हूं। ग्रीनफील्ड प्रोजेक्ट में शून्य-दोष नीतियों के साथ उस मेमोरी की आवश्यकता नहीं होती है। बस अपना कोड आधार हर समय 100% साफ रखें।
ईसाई हुजेर

48

सोनार इन 3 टूल्स का उपयोग प्लगइन्स के रूप में करता है और इन तीनों टूल्स से ग्राफ्स दिखा कर डेटा को तीनों को जोड़ देता है। इसलिए वे सोनार के पूरक हैं।


1
yup सोनार
frappuccino

27
हालांकि यह संस्करण 3.x तक सही था, सोनार 4.x अपने स्वयं के आंतरिक स्क्वीड विश्लेषक के पक्ष में कम से कम PMD और CheckStyle का उपयोग करने से दूर जा रहा है, क्योंकि यह उन्हें नियम का विस्तार करने और मुद्दों को हल करने की अधिक स्वतंत्रता देता है। थोड़ी देर के लिए इन परियोजनाओं को पूरा करना। उदाहरण के लिए, उन्होंने पहले ही 150 से अधिक पीएमडी नियमों को हटा दिया है, और अंततः इसे पूरी तरह से हटा देंगे।
ज्येष्ठ

1
दिलचस्प कारण है कि उन्होंने उन नियमों को रद्द कर दिया : sonarqube.org/…
झाक

33

हां और ना। अन्य उत्तरों के अलावा।

सोनारक्यूब वर्तमान में पीएमडी, चेकस्टाइल और फाइंडबग्स को अपदस्थ करने और जावा कोड का विश्लेषण करने के लिए अपनी स्वयं की तकनीक का उपयोग करने के रास्ते पर है (जिसे सोनराजवा कहा जाता है )। वे ऐसा करते हैं, क्योंकि वे अपना समय फिक्सिंग, उन्नयन (या उस पर प्रतीक्षा) को खर्च नहीं करना चाहते हैं, जो उन पुस्तकालयों (उदाहरण के लिए जावा 8), जो उदाहरण के लिए पुराने पुस्तकालयों का उपयोग करता है।

उन्हें आपकी व्यक्तिगत आईडीई के लिए सोनारलिंट नामक प्लगइन्स का एक नया सेट भी मिला ।


8

सोनार महान है, लेकिन यदि आप उल्लिखित टूल का अलग से उपयोग करना चाहते हैं और अभी भी अच्छे रेखांकन हैं, तो आप अपने जेनकिंस CI बिल्ड के हिस्से के रूप में एनालिसिस कलेक्टर प्लगइन का उपयोग कर सकते हैं । इसका एक मामूली फायदा यह है कि आप अपने PMD / Findbugs / Checkstyle कॉन्फ़िगरेशन को अपने SCM में देख सकते हैं और इसे एक अलग सोनार सर्वर पर भरोसा करने के बजाय अपने Maven बिल्ड में एकीकृत किया है।


5

सोनार अकेले इन साधनों से बहुत अधिक है। सबसे बड़ा लाभ है, जो आपको आसानी से कुछ भी कॉन्फ़िगर करने देता है। इसके द्वारा प्रस्तुत आँकड़े बहुत विस्तृत हैं (कोड आदि की लाइनें)। और यह भी परीक्षण कवरेज आदि के लिए महान समर्थन प्रदान करता है :)

यहाँ आप एक अच्छा रूप ले सकते हैं: http://nemo.sonarsource.org/


3

मैं अभी भी सोनार के अलावा इन उपकरणों का उपयोग करूंगा क्योंकि वे किसी नियम का उल्लंघन करने पर मावेन निर्माण को विफल कर सकते हैं। जहां सोनार अधिक पूर्वव्यापी है।


3

... कुछ साल बाद: नहीं, यह नहीं है! सोनारक्यूब अपने स्वयं के विश्लेषक के साथ सभी नियमों को कवर करने में सक्षम होने का दावा करता है, लेकिन अभी भी पीएमडी या चेकस्टाइल के नियम सोनारक्यूब द्वारा कवर नहीं किए गए हैं। उदाहरण के लिए देखें: PMD ReturnFromFinallyBlock


यह पीएमडी उल्लंघन भी गायब लगता है: डिफ़ॉल्ट पैकेज निजी स्तर के बजाय स्पष्ट स्कूपिंग का उपयोग करें?
user7294900

नहीं। नियमों को अलग-अलग नाम दिया गया है, लेकिन वे मौजूद हैं: कूद बयान "अंत" ब्लॉक में नहीं होने चाहिए और सदस्य चर दृश्यता निर्दिष्ट की जानी चाहिए
पेट्र बोडनार

2

खैर कम से कम सोनारक्यूब 6.3+ के बाद से ऐसा लगता है कि फाइंडबग्स (फिलहाल) एक प्लगइन के रूप में समर्थित नहीं है। Sonarsource अपने स्वयं के जावा-प्लगइन के साथ फाइंडबग्स-नियमों के प्रतिस्थापन पर काम कर रहा है।

यहां तक ​​कि उनके पास प्रत्येक नियम की प्रतिस्थापन स्थिति के लिए एक सूची है: http://dist.sonarsource.com/reports/coverage/findbugs.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.