2012-01-14 14 views
7

के साथ मैंने अपनी नौकरी एक हडसन मशीन से बहु-दास जेनकिन्स पर्यावरण में ले जाया, और अब जाकोओ कवरेज अब काम नहीं करता है।"परियोजना कवरेज 0% पर सेट है" - जैककिन्स में जैकोको और सोनार एंटी

श्रमजीवी (पुराने): हडसन 2.0.1, जेनकींस सोनार प्लगइन 1.7.1, सोनार 2.1.2

BROKEN (नया): जेनकींस 1.446, जेनकींस सोनार प्लगइन 1.7.2, सोनार 2.1.2

माई हडसन नौकरी को शिखर कहा जाता है और यह उसी मशीन पर सोनार के साथ एक हडसन सर्वर पर चलने के लिए प्रयोग किया जाता था। मैंने अपना (कोई मेवेन) निर्माण निम्नलिखित स्थापित करके स्थापित किया।

sonar.projectKey=com.skyboximaging:pinnacle 
sonar.projectName="Pinnacle" 
sonar.projectVersion=1.0 
sources=Pinnacle/src/java 
tests=Pinnacle/test/java 
binaries=Pinnacle/classes 
sonar.jacoco.reportPath=Pinnacle/jacoco.exec 
sonar.jacoco.antTargets=test-with-coverage 

(ध्यान दें कि:

1) मेरी build.xml test-with-coverage

2 कहा जाता है) हडसन में शिखर काम कॉन्फ़िगर "स्टैंडअलोन सोनार विश्लेषण आह्वान" करने के लिए इन गुणों के साथ करने के लिए एक चींटी लक्ष्य जोड़ा गया कोड जेनकींस काम कार्यक्षेत्र में शिखर निर्देशिका में चेक आउट किया गया है।)

3) कॉन्फ़िगर्ड सोनार "सामान्य सेटिंग" कोड कवरेज के लिए JaCoCo उपयोग करने के लिए

सब कुछ खूबसूरती से काम किया!

लेकिन नए जेनकींस वातावरण में, मैं देख रहा हूँ जेनकींस में इस त्रुटि उत्पादन का निर्माण:

23:15:17.863 INFO Sensor JaCoCoSensor... 
23:15:17.868 INFO Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/workspace/Pinnacle/Pinnacle/jacoco.exec 

उस फ़ाइल गुलाम जहां निर्माण भाग गया पर मौजूद नहीं है। (निर्देशिका/var/lib/jenkins/workspace/शिखर/शिखर मौजूद है।)

अन्य सभी सेंसर (FindBugs, PMD, आदि) ठीक काम कर रहे हैं। बस जाकोको टूट गया है।

क्या सोनार/जाकोको भी बहु-दास जेनकिन्स पर्यावरण में काम करता है?

मुझे संदेह है कि चींटी कार्य test-with-coverage नहीं चल रहा है। सोनार build.xml का पता कैसे लगाता है? और पुराने और नए प्रतिष्ठानों के बीच क्या अंतर है?

उत्तर

9

मैंने हाल ही में सेटअप किया है और सफलतापूर्वक सोनार और जैकोको को एक साथ चल रहा है। चूंकि मैं इस विषय के साथ हाल ही में हूं, मुझे लगा कि मैं इसी तरह के मुद्दों के लिए स्टैक ओवरफ्लो पर जांच करूँगा और मदद करूँगा। मैं Jacoco से परिणाम हो रही है, लेकिन पाया कि आप स्पष्ट रूप गुण आप अपनी पोस्ट में सूचीबद्ध किया है के अलावा निम्नलिखित मानकों सेट करने के लिए किया था:

sonar.core.codeCoveragePlugin=jacoco 
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec 
sonar.dynamicAnalysis=reuseReports 
sonar.surefire.reportsPath=tests/test-reports 

यदि सेट करने के लिए sonar.core.codeCoveragePlugin = jacoco है आप sonar.jacoco.reportPath संपत्ति का उपयोग करने में सक्षम होना चाहते हैं। अन्यथा, आपको sonar.jacoco.itReportPath संपत्ति का उपयोग करना होगा। हालांकि, मैं केवल कोडकोवर प्लगइन और रिपोर्टपैथ गुणों को सेट करने की अनुशंसा करता हूं। अन्यथा, यह सोनार में डिफ़ॉल्ट कवरेज विजेट के तहत प्रदर्शित नहीं होगा। कृपया ध्यान दें, आप डिफ़ॉल्ट कवरेज टूल और जैकोको का एक साथ उपयोग नहीं कर सकते हैं। यह एक या दूसरे होना चाहिए। मैंने जैकोको का उपयोग करने का फैसला किया।

आपका एंटी लक्ष्य जैकोको उत्पन्न करने के लिए कॉन्फ़िगर किया जाना चाहिए।पहले सोनार में चल रहे कार्यों के कार्यकारी परिणाम:

<jacoco:coverage enabled="${tests.code.coverage}" destfile="${jacoco.exec.dest}"> 
    <junit fork="yes" printsummary="withOutAndErr" dir="${tests.working.dir}"> 
    ... 

रिपोर्ट और किसी भी sunfire रिपोर्ट से आपको सोनार से पहले JUnit चला रहे हैं पुन: उपयोग करने सोनार बताने के लिए, वह यह है कि आप सोनार के बाहर JUnit चला रहे हैं सुनिश्चित करें:

sonar.dynamicAnalysis=reuseReports 
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec 
sonar.surefire.reportsPath=tests/test-reports 

जो भी कारण के लिए, यदि आप और अधिक वर्बोज़ डिबगिंग की जरूरत है, निम्नलिखित संपत्ति का उपयोग करें:

sonar.verbose = सच

+0

धन्यवाद! Sonar.jacoco.reportPath सेट करने के लिए पॉइंटर आखिरी बिट था जो मुझे अपने मल्टी-प्रोजेक्ट चींटी संचालित सोनार को कवरेज डेटा को सही तरीके से लोड करने के लिए आवश्यक था। –

+0

@ जेसन: अगर मैं जूनिट रिपोर्ट के बजाय साही का उपयोग कर रहा हूं तो क्या मैं सोनार.surefire.reportsPath में साही रिपोर्ट (जो एचटीएमएल में हैं) का उपयोग कर सकता हूं – vinod

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