/ / मैं ग्रैडल में ग्रैन्डबग प्लगइन से एक्सएमएल और एचटीएमएल दोनों रिपोर्ट कैसे उत्पन्न कर सकता हूं - ग्रेडेल, फाइंडबग्स

मैं Gradle - gradle, findbugs में Findbugs प्लगइन से एक्सएमएल और एचटीएमएल रिपोर्ट दोनों कैसे उत्पन्न कर सकता हूं

अभी मेरे पास बिल्डबॉग में FindBugs है

 apply plugin: "findbugs"
findbugs {
ignoreFailures = true
}
tasks.withType(FindBugs) {
reports {
xml.enabled = false
html.enabled = true
}
}

लेकिन अगर मैं दोनों HTML रिपोर्ट (अपनी मशीनों पर देखने के लिए डेवलपर्स के लिए) और XML रिपोर्ट (मेरे जेनकीस सीआई मशीनों के लिए) को सक्षम करने का प्रयास करता हूं तो मुझे निम्नलिखित मिलेंगे

FindBugs कार्य में केवल एक रिपोर्ट सक्षम हो सकती है, हालांकि इससे अधिक एक रिपोर्ट सक्षम थी। आपको उनमें से सभी को अक्षम करना होगा।

क्या कोई रास्ता है / हैक मुझे दोनों को उत्पन्न करने में सक्षम है - यहां तक ​​कि दो अलग-अलग कार्यों के माध्यम से?

उत्तर:

उत्तर № 1 के लिए 1

आप शायद कर सकते हैं, लेकिन वर्तमान स्थिति मेंप्लगइन, ऐसा लगता है कि आपको एक अलग कार्य को परिभाषित करना है जो फाइंडबग्स एक से फैलता है, लेकिन मानक एक की तुलना में एक अलग कॉन्फ़िगरेशन है। समस्या यह है कि आप फाइंडबग्स को वास्तव में दो बार चलाएंगे, और यह किसी भी शालीन आकार के कोडबेस के साथ एक प्रदर्शन जुर्माना हो सकता है।

जाहिर है आप "टी उपयोग" कर सकते हैं tasks.withType(FindBugs) { ... } अपने कार्यों को कॉन्फ़िगर करने के लिए, आपको कार्य नाम से स्पष्ट रूप से करना होगा

नोट: यदि आप इसे उदा। पर चला रहे हैं जेनकिंस, आप xml रिपोर्ट उत्पन्न करने के लिए अपने build.gradle चाहते हैं, और जेनकींस xml से html रिपोर्ट उत्पन्न करते हैं। इस तरह यह आपके निर्माण में दो बार निष्पादित नहीं होता है।


उत्तर № 2 के लिए 1

मैंने अपनी ग्रैडल स्क्रिप्ट को कॉन्फ़िगर करके इसे हल किया ताकि यह एक्सएमएल और एचटीएमएल रिपोर्ट के लिए खोज कार्य करता है और फिर एक कार्य उत्पन्न करता है जो अन्य दो पर निर्भर करता है।

def findbugsTask = task("findbugs") {
group "Verification"
}

[ "Html", "Xml" ].each { reportType ->
findbugsTask.dependsOn task("findbugs${reportType}", type: FindBugs) {
dependsOn "compileJavaWithJavac"
reports {
html.enabled = reportType == "Html"
xml.enabled = reportType == "Xml"
}
}
}

ध्यान दें कि यह फाइंडबग्स टूल को दो बार चलाएगा, जो आम तौर पर निरंतर एकीकरण के लिए एक मुद्दा नहीं होना चाहिए (जब तक कि आपका कोड आधार बहुत बड़ा न हो)।