javascript - कर्म द्वारा निष्पादित LCOV रिपोर्ट के प्रारूप को कैसे बदलें?




sonarqube karma-runner karma-coverage (2)

मैंने अपने जावास्क्रिप्ट कोड के कवरेज की रिपोर्ट करने के लिए कर्म को कॉन्फ़िगर किया है। यहाँ karma.conf.js फ़ाइल में विन्यास का हिस्सा है:

coverageReporter: {
  reporters: [
    {
      type: 'html',
      dir: 'build/karma/coverage'
    },
    {
      type: 'lcov',
      dir: 'build/karma/coverage',
      subdir: '.'
    },
    {
      type: 'cobertura',
      dir: 'build/karma/coverage'
    }
  ]
},

मेरी lcov.info फ़ाइल में निम्न प्रारूप है:

TN:
SF:./app/scripts/app.js
FN:16,(anonymous_1)
FN:26,(anonymous_2)
FNF:2
FNH:1
FNDA:1,(anonymous_1)
FNDA:0,(anonymous_2)
DA:2,1
DA:20,1
DA:29,0
DA:34,0
LF:4
LH:2
BRF:0
BRH:0
end_of_record

दुर्भाग्य से, सोनारक्यूबी जावास्क्रिप्ट प्लगइन केवल SF: DA: या BRDA: (cf LCOVParser ) के साथ शुरू होने वाली लाइनों पर विचार करता है।

उसके कारण, LCOV HTML रिपोर्ट (इस्तांबुल द्वारा बनाई गई) मुझे उसी डेटा पर सोनार की तुलना में एक उच्च कोड कवरेज देती है।

क्या उत्पन्न lcov.info के प्रारूप को बदलने का कोई तरीका है?

यदि मैं इस्तांबुल कोड में देखता हूं, तो मैं विभिन्न लेबलों के अर्थ की कल्पना कर सकता हूं:

  • BRF , BRH , BRDA शाखाओं के लिए हैं
  • FN , FNF , FNH , FNDA फ़ंक्शंस के लिए हैं
  • LN , LF , LH लाइनों के लिए हैं
  • *F कुल है, जबकि *H कवर्ड जानकारी है।

इस्तांबुल और सोनार कवरेज के बीच अंतर इस तथ्य के कारण प्रतीत होता है कि उत्तरार्द्ध कार्य और शाखाओं की कवरेज को पूरी तरह से अनदेखा करता है।

किसी भी विचार को हल करने के लिए?


Answers

आप एक स्क्रिप्ट चला सकते हैं: cat lcov.info | egrep "^(SF|DA|BRDA):" > lcov.info.new; mv lcov.info.new lcov.info cat lcov.info | egrep "^(SF|DA|BRDA):" > lcov.info.new; mv lcov.info.new lcov.info cat lcov.info | egrep "^(SF|DA|BRDA):" > lcov.info.new; mv lcov.info.new lcov.info

उसके साथ मुझे मिलता है:

SF:./app/scripts/app.js
DA:2,1
DA:20,1
DA:29,0
DA:34,0

सोनार के पास अपने स्वयं के प्लगइन्स का सेट है (जैसे मावेन-चेकस्टाइल-प्लगइन) जो इसे लागू होने पर चल रहा है। ये प्लगइन्स स्वचालित रूप से आपके कॉन्फ़िगर किए गए सोनार सर्वर में आपकी परियोजना सेटिंग्स के अनुसार कॉन्फ़िगर किए गए हैं।

इसके पीछे का तर्क आपके सोनार उदाहरण में नियंत्रित विन्यास है।

आपके द्वारा स्वचालित रूप से काम करने का कारण यह है कि आप अपने सोनार सर्वर इंस्टॉलेशन (लोकलहोस्ट: 9000) के लिए डिफ़ॉल्ट मानों का उपयोग कर रहे हैं।

यह 'शून्य-विन्यास' दृष्टिकोण यहाँ और विस्तृत है: http://www.sonarsource.org/we-had-a-dream-mvn-sonarsonar/





javascript sonarqube karma-runner lcov karma-coverage