2015-08-04 3 views
7

के साथ सोनारक्यूब टेस्ट कवरेज मैं SonarQube एक साधारण डॉट नेट ऐप के साथ काम करने की कोशिश कर रहा हूं। मुझे कुछ सफलता मिल रही है और चल रही है लेकिन कोड कवरेज काम नहीं कर रहा है।एमएसटेस्ट

ऐसा लगता है कि जब SonarQube के माध्यम से इस तरह के रूप DotCover and OpenCoverGallio

उदाहरण जो मैं का पालन किया है 'पर जाएँ' कवरेज उपकरण के कई के लिए बंद कर दिया गया समर्थन की तरह कई अन्य लोगों को इस मुद्दे का सामना करना पड़ा है:

मैं एक .coveragexml में यह गुप्त करने के लिए एक .coverage फ़ाइल

vstest.console.exe .\UnitTestProject1\bin\Debug\UnitTestProject1.dll /EnableCodeCoverage 

और

CodeCoverage.exe collect /output:DynamicCodeCoverage.coverage .\UnitTestProject1\bin\Debug\UnitTestProject1.dll 

उत्पन्न करने के लिए वी.एस. कमांड लाइन उपकरणों के कुछ करने की कोशिश की और कुछ कोड लिखा है पसंद here

से फ़ाइल प्राप्त करने के लिए निम्नलिखित प्राप्त करने के लिए एक्सएमएल:

<?xml version="1.0" standalone="yes"?> 
<CoverageDSPriv> 
    <Module> 
    <ModuleName>unittestproject1.dll</ModuleName> 
    <ImageSize>32768</ImageSize> 
    <ImageLinkTime>0</ImageLinkTime> 
    <LinesCovered>12</LinesCovered> 
    <LinesPartiallyCovered>0</LinesPartiallyCovered> 
    <LinesNotCovered>0</LinesNotCovered> 
    <BlocksCovered>9</BlocksCovered> 
    <BlocksNotCovered>0</BlocksNotCovered> 
    <NamespaceTable> 
     <BlocksCovered>9</BlocksCovered> 
     <BlocksNotCovered>0</BlocksNotCovered> 
     <LinesCovered>12</LinesCovered> 
     <LinesNotCovered>0</LinesNotCovered> 

और यहां तक ​​कि अधिक इस्तेमाल किया XSLT स्टाइलशीट एक में प्रदान करते हैं कि SonarQube धावक

<?xml version="1.0" encoding="utf-8"?> 
<results> 
    <modules> 
    <module name="unittestproject1.dll" path="unittestproject1.dll" block_coverage="100" line_coverage="100" blocks_covered="9" blocks_not_covered="0" lines_covered="12" lines_partially_covered="0" lines_not_covered="0"> 
     <functions> 
     <function name="Setup" type_name="UnitTest1" block_coverage="100" line_coverage="100" blocks_covered="1" blocks_not_covered="0" lines_covered="2" lines_partially_covered="0" lines_not_covered="0"> 
      <ranges> 
      <range source_id="1" covered="yes" start_line="13" start_column="9" end_line="13" end_column="10" /> 
      <range source_id="1" covered="yes" start_line="15" start_column="9" end_line="15" end_column="10" /> 
      </ranges> 
     </function> 

द्वारा इस्तेमाल किया जा सकता है जब मैं सोनार

  1. MSBuild.SonarQube.Runner चलाते हैं। exe शुरू
  2. एमएसबील्ड
  3. एमएसबिल्ड। SonarQube.Runner.exe अंत

मैं द्वारा वजह तरह त्रुटियों मिलती है: unknown XML Node, अपेक्षा कवरेज लेकिन परिणाम

इसका कारण यह है अपने मेरी XML की सरंचना पसंद नहीं करता है, लेकिन मुझे यकीन नहीं है कि कवरेज फ़ाइल पर मुझे कितना काम करना है और इसे प्रारूप में बदलने के लिए मुझे कितना काम करना है कि सोनार को

उम्मीद है कि मैं गलत रास्ते पर जा रहा हूं और वहां मैं पर मेरे Sonar plugins हैं

  1. C# बहुत ज्यादा काम के बिना सोनार में वी.एस. कवरेज या coveragexml फ़ाइलों को एकीकृत करने के

    अतिरिक्त सूचना = 4.1

  2. जेनेरिक कवरेज = 1 एक आसान तरीका है।1

उत्तर

4

दोनों OpenCover और dotCover रिपोर्ट सी # 4.1 प्लगइन द्वारा समर्थित हैं। कोड कवरेज आयात करने के लिए दोनों टूल्स के लिए sonar.cs.dotcover.reportsPaths या sonar.cs.opencover.reportsPaths संपत्ति सेट करें।

गैलियो बिल्कुल सही उपकरण नहीं है: परियोजना 2013 से निष्क्रिय है। सोनारक्यूब सी # प्लगइन 2.x प्लगइन के साथ मुख्य मुद्दा गैलियो पर निर्भर है कि यह गैलियो लॉन्च कर रहा था - अंत की अनुमति नहीं अनुकूलित करने के लिए उपयोगकर्ता कैसे परीक्षण शुरू किया जाना चाहिए और कवरेज कवर किया जाना चाहिए।

अब स्थिति बहुत आसान है: अपने पसंदीदा कोड कवरेज उपकरण लॉन्च, यह पूछना एक रिपोर्ट बनाने के लिए, और MSBuild SonarQube धावक करने के लिए इसे खाते हैं।

आप टीम फाउंडेशन सर्वर 2013 का उपयोग कर रहे हैं, तो कोड कवरेज को सक्षम करने का निर्माण परिभाषा Enable Code Coverage विकल्प को चुनने के रूप में है।

अब, यह बहुत दुर्भाग्यपूर्ण और भ्रामक कि माइक्रोसॉफ्ट दो अलग .coveragexml स्वरूपों है, और SonarQube सी # प्लगइन उनमें से केवल एक का समर्थन करता है कि (जो अब के लिए, है। http://jira.sonarsource.com/browse/SONARNTEST-3 देखें)।

कि टिकट के लिए इंतज़ार कर उन्हें ठीक करने की है, यहां दिए गए चरणों की उम्मीद .coveragexml रिपोर्ट बनाने के लिए कर रहे हैं (ध्यान दें: यदि आप 2015 की बजाय वी.एस. 2013 का उपयोग कर रहे हैं विभिन्न रास्तों में 12 से बदलें 14):

  1. MSBuild.SonarQube.Runner begin /k:SonarQube_Project_Key /n:SonarQube_Project_Name /v:1.0 /d:sonar.cs.vscoveragexml.reportsPaths=%CD%\VisualStudio.coveragexml
  2. msbuild
  3. "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" collect /output:VisualStudio.coverage "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "UnitTestProject1\bin\Debug\UnitTestProject1.dll"
  4. "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:VisualStudio.coveragexml VisualStudio.coverage
  5. MSBuild.SonarQube.Runner end

मैं XSLTs उपयोग करने के लिए, कोड कवरेज रिपोर्ट प्रारूपों कन्वर्ट करने के लिए बजाय CodeCoverage.exe माइक्रोसॉफ्ट उपकरण का उपयोग की सिफारिश नहीं होगा।

+0

त्वरित repsonse के लिए धन्यवाद! यह पूरी तरह से काम किया। मुझे CodeCoverage.exe का उपयोग करके आयात किया गया कोड कवरेज मिला। हम टीएफएस का उपयोग नहीं करते हैं (टीमसिटी हमारा मानक है) इसलिए मैंने उस विकल्प का पता नहीं लगाया। मैंने ओपनकॉवर या डॉटकॉवर सुझाए गए समाधान का प्रयास नहीं किया है, लेकिन करेंगे और रिपोर्ट करेंगे। – user3210699

+0

@ user3210699 हाय, क्या आपने कभी भी ओपनकॉवर विकल्प एमएसटीएस्ट के साथ काम किया है? – Saan

+0

हाय, मैंने केवल वीएसटीएस्ट के साथ ओपनकॉवर की कोशिश की है, लेकिन मैं उम्मीद करता हूं कि एमएसटीएस्ट इसी तरह से काम करे। आप पूर्ण निर्देशों के लिए http://docs.sonarqube.org/display/PLUG/C%23+Code+Coverage+Results+ आयात पर देख सकते हैं। –

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

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