2013-01-17 63 views
6

सोनार में * test.java स्रोत कोड की गुणवत्ता की जांच करना संभव है, उदा। तरीके अधिकतम आकार 100 लाइनें?सोनार जावा: परीक्षण कक्षा स्रोत कोड की गुणवत्ता की जांच करें?

समस्या यह है कि जावा जूनिट परीक्षण उत्पादक कोड, जटिलता के साथ बढ़ रहे हैं।

हमारे पास 1000 से अधिक लाइनों और 2 विधियों के साथ इकाई परीक्षण कक्षाएं हैं।

हम इन * टेस्ट.जावा कक्षाओं के लिए सोनार में कुछ नियमों की जांच करना चाहते हैं।

उत्तर

4

सोनार 3.1 के बाद से, इसमें एक प्लगइन शामिल है जिसमें यूनिट परीक्षणों (a JIRA was created for that) के खिलाफ विशिष्ट पीएमडी नियम निष्पादित किए जाने हैं। आप उन्हें Configuration > Quality Profiles > Coding Rules में देख सकते हैं।

हालांकि, ऐसा लगता है कि आप परीक्षण स्रोत कोड पर एक पूर्ण विश्लेषण को चलाने के लिए, की तरह आप उत्पादन स्रोत कोड पर करते हैं, और अतिरिक्त मीट्रिक मिल चाहते हैं (उदाहरण के लिए। एक % rules compliance और यह भी एक % rules compliance for unit tests) । मुझे नहीं लगता कि सोनार ऐसी सुविधा प्रदान करता है। 2 सोनार विश्लेषण चलाने के लिए आप क्या कर सकते हैं:

  1. आपका पहला विश्लेषण वर्तमान है;
  2. दूसरा विश्लेषण src/test/java पर "उत्पादन" स्रोत कोड के रूप में विचार करेगा। इस प्रकार, यह दूसरा विश्लेषण आपको आपके कोड की गुणवत्ता देगा। इस विश्लेषण के लिए, आप एक विशिष्ट मेवेन प्रोफाइल (या एक वैकल्पिक pom.xml) निर्दिष्ट कर सकते हैं जो परियोजना की जानकारी को बदल देगा (उदाहरण के लिए यह इंगित करेगा कि src/test/java डिफ़ॉल्ट sourceDirectory है)।
+0

thx, मुझे जो चाहिए, पूर्ण विश्लेषण नहीं, लेकिन कुछ नियम :) – pan40

+0

सोनार में> 3.4 आप अपने नियमों की प्रतिलिपि बना सकते हैं और "पीएमडी यूनिट टेस्ट" प्लगइन – pan40

0

सोनारक्यूब 4.5.2 के साथ (पता नहीं जब वे व्यवहार बदलते हैं) ऐसा लगता है कि यूनिट परीक्षण अब विश्लेषण से बाहर नहीं हैं। sonar-runnersonar.sources=src के साथ चलने पर सोनार भी src/test/java के लिए समस्याएं उत्पन्न करता है।

परीक्षण कोड के लिए एक विशिष्ट गुणवत्ता नियमसेट का उपयोग करने के लिए एक दृष्टिकोण दो विश्लेषणों को चलाने के लिए होगा: एक मुख्य कोड के लिए और दूसरा परीक्षण कोड के लिए।

sonar-project.properties: sonar-runner -Dsonar.projectKey=testsonar.test -Dsonar.sources=src/test/java -Dsonar.projectName="testSonar TEST"

विभिन्न गुणवत्ता: sonar-runner

  • परीक्षण कोड का विश्लेषण करें:

    sonar.projectName=testSonar 
    sonar.projectKey=testsonar 
    sonar.sources=src/main/java 
    sonar.projectVersion=1.0 
    
    • मुख्य कोड का विश्लेषण करें
      यह इस प्रकार है महसूस किया जा सकता प्रोफाइल सर्वर के माध्यम से बदला जाना चाहिए (डैशबोर्ड | परियोजना विन्यास | गुणवत्ता प्रोफाइल), क्योंकि -Dsonar.profileis deprecated

      यह मेवेन या जेनकींस के माध्यम से विश्लेषण के साथ भी काम करना चाहिए।

  • +0

    में सुधार कर सकते हैं। आप इसे जेनकिन्स जॉब में कैसे चलाते हैं? क्या आपको 2 नौकरियां चलनी चाहिए (मुख्य विश्लेषण के लिए एक और परीक्षण के लिए एक)? – GaspardP

    +0

    मैं दो विश्लेषणों के साथ केवल एक नौकरी का उपयोग करने की सिफारिश करता हूं, क्योंकि यह बनाए रखने के लिए तेज़ और आसान है। आप एक और पोस्ट बिल्ड चरण जोड़ सकते हैं (या तो सोनार या एक खोल जो मावेन लक्ष्य निष्पादित करता है) ऊपर वर्णित परीक्षण पैरामीटर ('-D') पास करता है – schnatterer

    1

    मैंने यह भी देखा कि सोनारक्यूब डिफ़ॉल्ट रूप से गुणवत्ता विश्लेषण के लिए परीक्षण संसाधनों को अनदेखा कर देगा। Schnatterers उत्तर का उपयोग करके, मुझे सोनारक्यूब में स्रोतों के रूप में परीक्षण कक्षाओं सहित केवल एक अलग परियोजना बनाने का एक आसान तरीका मिला, इसलिए उन पर गुणवत्ता एनीलिस ट्रिगर किया गया।साथ

    mvn sonar:sonar -Panalyze-test-classes 
    

    तो इस प्रोफाइल सक्रिय कर देंगे

    <profiles> 
          <profile> 
            <id>analyze-test-classes</id> 
            <properties> 
              <sonar.sources>src/test/java</sonar.sources> 
              <sonar.tests></sonar.tests> 
              <sonar.projectName>${project.name}-tests</sonar.projectName> 
              <sonar.projectKey>${project.groupId}:${project.artifactId}-tests</sonar.projectKey> 
            </properties> 
          </profile> 
        </profiles> 
    

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