2012-09-12 13 views
17

मैं मिश्रित स्कैला/जावा में लगभग कोडिंग कोड के लिए सरल कोड कवरेज रिपोर्ट सेट अप करने का प्रयास कर रहा हूं। एक 90/10 अनुपात और कुछ गंभीर रोडब्लॉक में चल रहा है। मैंने पहले जावा-केवल टीम के साथ & प्रशासित सोनार को बड़ी सफलता के लिए स्थापित किया है, लेकिन यह एक विकल्प नहीं प्रतीत होता है।क्या स्काला के लिए समर-स्तरीय कोड कवरेज समतुल्य है?

सोनार डब्ल्यू/स्कैला प्लगइन छोटी है और स्कैला-केवल परियोजनाओं का समर्थन करने के लिए प्रतीत होता है, मिश्रित नहीं।

एससीसीटी हमारे मेवेन बिल्ड के साथ एकीकृत करता है, लेकिन झूठी-नकारात्मक परीक्षण विफलताओं के साथ बार-बार विफल रहता है।

अंडरकवर अब तक का सबसे अच्छा भाग्य रहा है; यह हमारे मेवेन बिल्ड & के साथ एकीकृत है रिपोर्ट बनाता है, लेकिन वे कहीं भी संग्रहीत या होस्ट नहीं किए जाते हैं क्योंकि वे सोनार के साथ होंगे। जेनरेट की गई रिपोर्टों को नेविगेट करना आसान बनाने के लिए कोई केंद्रीय सूचकांक भी प्रतीत नहीं होता है।

मैंने यहां स्टैक ओवरफ्लो पर उत्तर पढ़े हैं, लेकिन वे काफी हद तक 2010 तक डेट करते हैं और सुझाव देते हैं कि कोई सभ्य समाधान उपलब्ध नहीं है। क्या यह बदल गया है?

क्या कुछ स्पष्ट है जो मुझे याद आ रही है?

+1

कोबर्टुरा कैसे काम करेगा? पिछली बार मैंने जांच की थी कि यह काफी उपयोगी था, हालांकि सोनार के साथ एकीकृत नहीं है। – ron

+0

@ron: वह मेरी सूची में अगला है। मैं कोबर्टुरा के एक्सएमएल प्रारूप में रिपोर्ट लिखने के लिए अंडरकवर प्राप्त करने में कामयाब रहा, लेकिन वास्तविक रूप से कोबर्टुरा प्लगइन नहीं चला, जेनकिन्स ने यह स्वीकार करने से इंकार कर दिया कि कोड कवरेज रिपोर्ट मौजूद है। मुझे कोबर्टुरा के बारे में कुछ सुनना याद है जो स्कैला उत्पन्न कर सकने वाले सभी जावा वर्गों के साथ अच्छी तरह से मुकाबला नहीं कर रहा है, लेकिन मुझे लगता है कि मुझे पता चल जाएगा। बने रहें! – warandpeace

+1

@ron: कोबर्टुरा + जेनकिन्स कोबर्टुरा प्लगइन काफी अच्छी तरह से काम कर रहा है। सटीक और पठनीय, रुझान दिखाता है और मुझे ड्रिल करने की अनुमति देता है। यह काफी सोनार नहीं है, लेकिन यह काम करता है! – warandpeace

उत्तर

7

सोनार पक्ष के बारे में:

  • हाँ, Scala Sonar Plugin विकास वर्तमान में ठप है। इसे समुदाय द्वारा शुरू किया गया था, लेकिन किसी ने इसे अभी तक लेने की पेशकश नहीं की है। अगर कुछ स्वयंसेवक हैं, तो हमें मार्गदर्शन करने और उनकी सहायता करने में खुशी होगी।

  • एकल परियोजना के अंदर कई भाषाओं के समर्थन से संबंधित, सोनार में समर्थन आ जाएगा। मैं आपको इसके लिए रोडमैप नहीं दे सकता, लेकिन हम वर्तमान में सोना में अगली रिलीज में इस समर्थन को जोड़ने के बारे में सोच रहे हैं, इसलिए यह एक अल्पकालिक मुद्दा है।

+0

सोनार के लिए स्कैला समर्थन पर 4 साल और अभी भी कोई शब्द नहीं है। फ्रेडी मैलेट का अंतिम शब्द बस स्पष्ट की पुष्टि करने के लिए था: https://groups.google.com/forum/#!topic/sonarqube/MkcW9tFG8UY – RCross

6

आप या तो SCCT या JaCoCo का उपयोग कर सकते हैं।

  • एससीसीटी: यह संस्करण 2.10 तक स्कैला का समर्थन करता है, लेकिन विकास लगभग 9 महीने तक रुका हुआ प्रतीत होता है। यह स्काला को मूल रूप से समर्थन देता है और मेवेन और एसबीटी दोनों के साथ काम करता है।
  • जाकोको संविधान विकास के अधीन है। यह स्कैला के किसी भी संस्करण का समर्थन करता है, लेकिन मूल रूप से नहीं, बल्कि बाइटकोड स्तर पर। तो आपको कुछ कलाकृतियों मिल सकती हैं, उदा। कुछ कोड केवल आंशिक कवरेज प्राप्त करते हैं, क्योंकि उत्पन्न बाइटकोड में कुछ सैद्धांतिक कोड पथ JaCoCo देखता है (लेकिन जिसे स्कैला कोड से कभी निष्पादित नहीं किया जा सकता है)।

जैकोको मेवेन और स्कैला के साथ स्थापित करने के लिए थोड़ा मुश्किल हो सकता है। यहां कुछ चालें:

  1. एजेंट लॉन्चर के साथ संस्करण का उपयोग करें। Preprocessing बाइटकोड के साथ संस्करण का उपयोग न करें।
  2. जब मैवेन के साथ जाकोको का उपयोग करते हैं: वहां एक मेवेन कार्य (jacoco:prepare-agent) है जो एजेंट लॉन्चर के लिए सही अभिव्यक्ति उत्पन्न करेगा और इसे किसी संपत्ति में संग्रहीत करेगा। जावा वर्चुअल मशीन चलाते समय आप इस प्रॉपर्टी को कमांड लाइन पैरामीटर के रूप में उपयोग कर सकते हैं।
  3. एजेंट लॉन्चर को पैरामीटरेट करें, ताकि एकाधिक लॉन्च (जैसे विभिन्न परीक्षण चलाने के लिए) एक ही लॉग फ़ाइल को लिखें। कुछ आईडीई प्लगइन्स में ऐसी फ़ाइल को पार्स करने में समस्या होगी, लेकिन उदाहरण के लिए जैकोको हडसन प्लगइन ठीक काम करता है।
+1

आपके उत्तरों के लिए धन्यवाद, मैं बस एससीसीटी को कोबर्टूरा रिपोर्ट उत्पन्न करने में कामयाब रहा और हमें जेनकींस इसे पढ़ने के लिए cobertura प्लगइन। हालांकि एससीसीटी में इसके कोड कवरेज में सबकुछ शामिल है। मैं JaCoCo की तरह कुछ फ़ोल्डर्स को बाहर करने में सक्षम होना चाहता हूं। jacoco.exoces में jacoco.Config: = Seq ("विचार *", "* मार्ग *", "नियंत्रक * मार्ग *", "नियंत्रक * रिवर्स *", "नियंत्रक * जावास्क्रिप्ट *", "नियंत्रक * रेफरी *") , – Roch

+0

क्या आप जानते हैं कि मैं ऐसा कर सकता हूं? – Roch

+0

आपकी सबसे अच्छी शर्त cobertura.xml फ़ाइल को पोस्ट करने के लिए हो सकती है। आप इसे आसानी से मैवेन ग्रोवी एकीकरण (http://books.sonatype.com/mcookbook/reference/ch02s02.html) के साथ कर सकते हैं। वैकल्पिक रूप से आप फ़ाइल CoberturaReporter.scala (https://github.com/mtkopone/scct/blob/master/src/main/scala/reaktor/scct/report/CoberturaReporter.scala) को बदल सकते हैं। –

संबंधित मुद्दे