2012-08-27 19 views
16

मेरे पास मेवेन में सोनार प्रोफाइल है। कोड कवरेज मीट्रिक को छोड़कर सब कुछ ठीक काम करता है। मैं सोनार को केवल कोड कवरेज मीट्रिक के लिए कुछ कक्षाओं को अनदेखा करना चाहता हूं।सोनार को कोड के लिए कुछ वर्गों को अनदेखा करने के लिए कैसे करें मीट्रिक?

<profile> 
    <id>sonar</id> 
    <properties> 
     <sonar.exclusions>**/beans/jaxb/**</sonar.exclusions> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>${maven.surefire.plugin.version}</version> 
       <configuration> 
        <redirectTestOutputToFile>true</redirectTestOutputToFile> 
        <excludes> 
         <exclude>**/*Suite*.java</exclude> 
         <exclude>**/*RemoteTest.java</exclude> 
         <exclude>**/*SpringTest.java</exclude> 
         <exclude>**/*CamelTest.java</exclude> 
         <exclude>**/*FunctionalTest.java</exclude> 
         <exclude>**/*IntegrationTest.java</exclude> 
         <exclude>**/*DaoBeanTest.java</exclude> 
        </excludes> 
       </configuration> 
      </plugin>      
     </plugins> 
    </build> 
</profile> 

कृपया मदद: मैं निम्नलिखित प्रोफ़ाइल है। मैं

<exclude>com/qwerty/dw/publisher/Main.class</exclude> 

की तरह कुछ जोड़ने की कोशिश की, लेकिन यह मदद नहीं की

अद्यतन

मैं एक सही Cobertura प्रोफ़ाइल है। मैं सोनार प्रोफ़ाइल में जोड़ें करने की कोशिश की, लेकिन अभी भी मैं बजाय Cobertura प्रोफ़ाइल

<profile> 
    <id>sonar</id> 
    <properties> 
     <sonar.exclusions>**/beans/jaxb/**</sonar.exclusions> 
     <sonar.core.codeCoveragePlugin>cobertura</sonar.core.codeCoveragePlugin> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>${maven.surefire.plugin.version}</version> 
       <configuration> 
        <redirectTestOutputToFile>true</redirectTestOutputToFile> 
        <excludes> 
         <exclude>**/*Suite*.java</exclude> 
         <exclude>**/*RemoteTest.java</exclude> 
         <exclude>**/*SpringTest.java</exclude> 
         <exclude>**/*CamelTest.java</exclude> 
         <exclude>**/*FunctionalTest.java</exclude> 
         <exclude>**/*IntegrationTest.java</exclude> 
         <exclude>**/*DaoBeanTest.java</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>${cobertura.maven.plugin.version}</version> 
       <configuration> 
        <instrumentation> 
         <excludes> 
          <exclude>com/qwerty/dw/dao/*</exclude> 
          <exclude>com/qwerty/dw/domain/*</exclude> 
          <exclude>com/qwerty/dw/beans/**/*</exclude> 
          <exclude>com/qwerty/dw/daemon/exception/*</exclude> 
          <exclude>com/qwerty/dw/daemon/Main.class</exclude> 
          <exclude>com/qwerty/dw/sink/Main.class</exclude> 
          <exclude>com/qwerty/dw/publisher/Main.class</exclude> 
          <exclude>com/qwerty/dw/publisher/dao/*</exclude> 
          <exclude>com/qwerty/dw/publisher/domain/*</exclude> 
         </excludes> 
        </instrumentation> 
        <formats> 
         <format>html</format> 
        </formats> 
        <aggregate>true</aggregate> 
        <check> 
         <haltOnFailure>true</haltOnFailure> 
         <branchRate>60</branchRate> 
         <lineRate>60</lineRate> 
         <totalBranchRate>60</totalBranchRate> 
         <totalLineRate>60</totalLineRate> 
        </check> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>clean</goal> 
          <goal>check</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 
+0

शायद एक अनसुलझे मुद्दा? http://jira.codehaus.org/browse/SONAR-766 – Jayan

उत्तर

1

मैं तुम लगता है फिर समाधान क्या यह उत्तर Exclude methods from code coverage with Cobertura ध्यान रखें में वर्णित की तलाश में की तरह लगभग 95% से 53% है यदि आप सोनार 3.2 का उपयोग कर रहे हैं तो आपने यह निर्दिष्ट किया है कि आपका कवरेज टूल कोबर्टुरा है और जैकोको (डिफ़ॉल्ट) नहीं है, जो इस प्रकार की सुविधा का समर्थन नहीं करता है,

+0

मैं प्रश्न को सुधारता हूं।कोबर्टुरा –

1

कभी-कभी, क्लॉवर सभी के लिए कोड कवरेज रिपोर्ट प्रदान करने के लिए कॉन्फ़िगर किया गया है गैर परीक्षण कोड। आप इन प्राथमिकताओं को ओवरराइड करने के लिए चाहते हैं, आप instrumented किया जा रहा से बाहर और स्रोत फ़ाइलें शामिल करने के लिए विन्यास तत्वों का उपयोग कर सकते हैं:

<properties> 
    <sonar.exclusions> 
     **/domain/*.java, 
     **/transfer/*.java 
    </sonar.exclusions> 
</properties> 
11

हमें इस के लिए:

<plugin> 
    <groupId>com.atlassian.maven.plugins</groupId> 
    <artifactId>maven-clover2-plugin</artifactId> 
    <version>${clover-version}</version> 
    <configuration> 
     <excludes> 
      <exclude>**/*Dull.java</exclude> 
     </excludes> 
    </configuration> 
</plugin> 

इसके अलावा, आप निम्नलिखित सोनार विन्यास शामिल कर सकते हैं काम (मूल रूप से pom.xml स्तर गुण):

 <properties> 
      <sonar.exclusions>**/Name*.java</sonar.exclusions> 
     </properties> 

http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-Patterns के अनुसार ऐसा लगता है कि आप या तो साथ "जावा" यह समाप्त कर सकते हैं या संभवतः " * "जावा वर्गों प्राप्त करने के लिए आप में रुचि रखते हैं

+2

द्वारा उत्पन्न रिपोर्टों का पुन: उपयोग कैसे करें मैं इसे भी देख रहा था, लेकिन इसमें प्रत्येक मीट्रिक (दस्तावेज एपीआई, नियम अनुपालन, ...) से फ़ाइलें शामिल नहीं हैं और न केवल परीक्षण कवरेज। – g00glen00b

+0

हाँ वही है जो हम अपने मामले में चाहते थे। आप इसे pmd/findbugs या jacoco बहिष्करणों के समान जोड़ने में सक्षम हो सकते हैं [?] – rogerdpack

+1

यह वही हो सकता है जो आप चाहते थे हालांकि प्रश्न स्पष्ट रूप से कवरेज के बारे में था: "मैं सोनार को कुछ कक्षाएं ** केवल ** के लिए अनदेखा करना चाहता हूं कोड कवरेज मीट्रिक " – Lonzak

3

jacoco के लिए:।

-Dsonar.jacoco.excludes=**/*View.java 
+2

'sonar.jacoco.excludes' अब समर्थित नहीं है (सोनारक्यूब 4.5.1 के रूप में)। "नया] कॉन्फ़िगरेशन के लिए [यहां] (http://stackoverflow.com/a/27133765/1005481) देखें। –

27

इस लेखन (जो SonarQube 4.5.1 के साथ है) के समय, सही संपत्ति: इस गुण का उपयोग स्थापित करने के लिए sonar.coverage.exclusions, जैसे है:

<properties> 
    <sonar.coverage.exclusions>foo/**/*,**/bar/*</sonar.coverage.exclusions> 
</properties> 

यह बस कुछ ही संस्करणों पहले से एक परिवर्तन हो रहा है। ध्यान दें कि यह दिए गए वर्गों को केवल कवरेज गणना से बाहर करता है। अन्य सभी मीट्रिक और मुद्दों की गणना की जाती है।

आदेश SonarQube के अपने संस्करण के लिए संपत्ति नाम खोजने के लिए, आप सामान्य सेटिंग्स अपने SonarQube उदाहरण के अनुभाग में जाकर और (कोड कवरेज आइटम के लिए देखो SonarQube 4.5.x में की कोशिश कर सकते हैं, कि है सामान्य सेटिंग्स → बहिष्करण → कोड कवरेज)। इनपुट फ़ील्ड के नीचे, यह ऊपर उल्लिखित संपत्ति का नाम देता है ("कुंजी: sonar.coverage.exclusions")।

+0

धीरे-धीरे के लिए यह sonarRunner है { सोनारप्रॉपर्टीज { संपत्ति "sonar.coverage.exclusions", "**/डोमेन/** ',' **/facade/** ',' **/stub/** ' , '**/मॉडल/**', '**/config/**' ' संपत्ति "sonar.exclusions", "**/stub/**" } } –

+0

@ थॉमस लेकिन ऐसा लगता है कि ऐसा करता है एकीकरण परीक्षण के लिए कांटा नहीं है। –

+1

मुझे दस्तावेज़ों में कहीं भी 'sonar.coverage.exclusions' नहीं मिल रहा है, केवल' sonar.exclusions' का उल्लेख किया गया है। –

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

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