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



sonarqube karma-runner (1)

मैंने अपने जावास्क्रिप्ट कोड के कवरेज की रिपोर्ट करने के लिए कर्म को कॉन्फ़िगर किया है। यहाँ 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 कवर्ड जानकारी है।

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

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


आप एक स्क्रिप्ट चला सकते हैं: 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




karma-coverage