43

के लिए कोड कवरेज उपकरण स्कैला के लिए उपलब्ध कोड कवरेज टूल क्या हैं?स्कैला

मेरे पास स्कैला स्पेक परीक्षण और एक हडसन निरंतर एकीकरण सेट-अप है। क्या कोड कवरेज को मापने और ट्रैक करने के लिए मैं इस सेटअप में कुछ हुक-इन कर सकता हूं?

+3

का एक उदाहरण देखें, यह मेरे लिए आश्चर्यजनक है कि यह रचनात्मक नहीं था। बिल्ली, 33 लोगों ने इसे उखाड़ फेंक दिया।6 लोगों ने इसे संयुक्त 43 अपवॉट के साथ उत्तर दिया। लेकिन किसी भी तरह से यह समुदाय के लिए रचनात्मक नहीं है? 'cmon, y'all। अत्यधिक सम्मान और प्यार के साथ मैं अध्यापन के बारे में कुछ सीखने के साथ-साथ "हमारे क्यू एंड ए प्रारूप" के "नियम" को बदलने का सुझाव दूंगा। –

+1

सहमत हुए। अगर आपको यह बंद नहीं होना पसंद है, तो फिर से खोलने के लिए वोट दें। –

+2

इच्छा है कि मेरे पास 3000 प्रतिष्ठा थी इसलिए मैं फिर से खोलने के लिए मतदान कर सकता हूं ... – FelixM

उत्तर

9

मैं Cobertura का उपयोग करता हूं। हालांकि, किसी भी जावा कवरेज उपकरण को ठीक काम करना चाहिए। एकमात्र पकड़ यह है कि आप अपनी कवरेज सूची में बड़ी संख्या में ऑटो-जेनरेटेड कक्षाओं के साथ समाप्त हो जाएंगे। ऐसा इसलिए है क्योंकि स्कैला बहुत ही प्राकृतिक जेवीएम बाइटकोड में संकलित होता है, लेकिन आलसी मूल्यांकन जैसे सामान्य कार्यात्मक विशेषताओं को समायोजित करने के लिए इसे अनैसर्गिक रूप से बड़ी संख्या में कक्षाएं उत्पन्न करने के लिए मजबूर किया जाता है।

+0

यह स्रोत कोड के अलावा किसी अन्य चीज़ का वाद्य यंत्र की क्लासिक समस्या है: आप उत्तर को शोर करते हैं। इस एसओ उत्तर पर स्रोत फ़ाइलों के बजाय कक्षा फ़ाइलों का उपयोग करते समय संबंधित परेशानियों पर चर्चा देखें: http://stackoverflow.com/a/15260092/120163 –

18

SCCT एक संकलक प्लगइन जो उपकरणों कक्षाएं कवरेज डेटा इकट्ठा करने के लिए है: गैर मुख्यधारा भाषाओं (जैसे स्काला के रूप में) के साथ

http://mtkopone.github.com/scct/

+0

afaik एससीसीटी को हडसन में हुक करने का कोई तरीका नहीं है? –

+2

एससीसीटी अब अधिभार है। – mmlac

8

एक समस्या यह है कि उपकरण, क्योंकि वे कर रहे हैं मुश्किल है निर्माण करने के लिए मुश्किल है।

यह तकनीकी पेपर Branch Coverage for Arbitrary Languages Made Easy (मैं लेखक हूं) वर्णन करता हूं कि एक सामान्य टूल-बिल्डिंग इंफ्रास्ट्रक्चर का उपयोग करके इस समस्या को हल करने में मदद करने के लिए व्यवस्थित तरीके से लैंगुग के लिए टेस्ट कवरेज टूल कैसे बनाएं।

हमने इस तरह से test coverage tools for Java, C#, COBOL, C, C++, PL/SQL, ... लागू किया है, जिसमें उपकरण, डेटा संग्रह और परीक्षण कवरेज प्रदर्शन और रिपोर्टिंग शामिल है। इस तरह स्कैला को लागू करने के लिए यह सीधा होगा।

अन्य उत्तरों द्वारा उत्पन्न समाधान स्कैला ("ऑटो शैलीबद्ध वर्ग") के कार्यान्वयन से भ्रमित जानकारी उत्पन्न करता है। डेवलपर्स क्या देखना चाहते हैं उनके कोड के संदर्भ में कवरेज डेटा है। जिस दृष्टिकोण का हम उपयोग करते हैं वह स्रोत कोड का उपयोग करता है, इसलिए परिणाम पूरी तरह से बताए जाते हैं और केवल स्रोत कोड के संदर्भ में होते हैं; यहां तक ​​कि परीक्षण कवरेज दर्शक भी कवरेज जानकारी के साथ कवर स्रोत कोड दिखाता है।

2

मैं जैकोको का उपयोग करता हूं। इसे संकलन- या रनटाइम-निर्भरताओं, फ्लाई डब्ल्यू/ओ विशेष उपकरण चरण पर उपकरण कक्षाओं की आवश्यकता नहीं है।

इसके अलावा यह सोनार के साथ एकीकृत और मेवेन सेंट्रल पर प्रकाशित हुआ। https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

मैं बेहतर रिपोर्टिंग जोड़ना चाहते हैं: अधिक विस्तृत शाखा कवरेज makrup, उत्पन्न वर्गों/तरीकों में से छोड़कर, और ScalaDoc की तरह काम होने के लिए (देखें SCCT उदाहरण के लिए रिपोर्ट)

3

यहाँ उदाहरण है

मैंने एक एसबीटी प्लगइन एक साथ रखा है जिसे xsbt-coveralls-plugin कहा जाता है जो हुड के नीचे स्कैक्ट का उपयोग करता है, लेकिन परिणाम http://coveralls.io पर प्रकाशित करता है।

अस्वीकरण:मैं सिर्फ इस प्लगइन कल (10 वीं मार्च 2013) का निर्माण किया है, इसलिए वह अभी सही होने की उम्मीद नहीं है, लेकिन GitHub पेज

को कीड़े और सुविधा अनुरोधों भेजूँ फिर भी, यह अच्छा है अगर आप सार्वजनिक रूप से दृश्यमान होने के लिए कवरेज रिपोर्ट कोड करना चाहते हैं। परिणाम