विफल रहता है, तो मैं चेक के विफल होने पर उपयोग किए जाने वाले कई "चेक" और "परीक्षण" प्लगइन्स की रिपोर्ट फ़ाइल खोलना चाहता हूं। मुझे पता है कि मैं can use "finalizedBy किसी अन्य कार्य को निष्पादित करने के लिए कोई फर्क नहीं पड़ता कि मूल कार्य निष्पादित किया गया था या नहीं।ग्रेड: केवल एक कार्य निष्पादित करें यदि कोई कार्य
task showCheckStyleResultsInBrowser(type: Exec) {
ext.htmlFileName = "main.html"
executable 'open'
args 'file:///' + checkstyleMain.reports.xml.destination.parent + "/" + ext.htmlFileName
}
task showCheckStyleResultsIfFailed {
ext.aCheckFailed = true
doLast {
if (ext.aCheckFailed) {
showCheckStyleResultsInBrowser.execute()
}
}
}
checkstyleMain {
finalizedBy 'showCheckStyleResultsIfFailed'
doLast {
// convert the xml output to html via https://stackoverflow.com/questions/20361942/generate-checkstyle-html-report-with-gradle
ant.xslt(in: reports.xml.destination,
style: new File('config/checkstyle/checkstyle-noframes-sorted.xsl'),
out: new File(reports.xml.destination.parent, showCheckStyleResultsInBrowser.htmlFileName))
showCheckStyleResultsIfFailed.aCheckFailed = false
}
}
स्पष्टीकरण (जहां तक मैं यह समझ के रूप में):
showCheckStyleResultsInBrowser
IST है कि ज्ञान का उपयोग करते हुए मैं रिपोर्ट खोलने के लिए केवल अगर इसी कार्य (इस उदाहरणcheckstyle
में) विफल रहता है निम्नलिखित की कोशिश की कार्य वास्तव में रिपोर्ट खोलने का काम करता है। आप वास्तव में क्या कर सकते हैं इसे अनदेखा कर सकते हैं, लेकिन यह चेक-टास्कshowCheckStyleResultsIfFailed
कार्य एक संपत्तिaCheckFailed
घोषित करता है और इसे सत्य में प्रारंभ करता है। जब इसे निष्पादित किया जाता है तो यह जांचता है कि यह अभी भी सत्य है (जिसका अर्थ है, चेक सफलतापूर्वक पूरा नहीं हुआ) और यदि ऐसा है, तोshowCheckStyleResultsInBrowser
का उपयोग करके रिपोर्ट खोलें।checkstyleMain
वह कार्य है जो वास्तविक जांच करता है। मुझे इसके परिणाम में दिलचस्पी है। हालांकि मुझे नहीं पता कि इसे कैसे प्राप्त किया जाए। तो इसके बजाय,checkStyleMain
कार्य के अंत में, मैंनेaCheckFailed
प्रॉपर्टी कोfalse
पर सेट किया है, इस तथ्य पर निर्भर करते हुए कि अंतिम चरण केवल तभी निष्पादित किया जाएगा जब पिछले कोई भी चेक विफल नहीं हुआ।showCheckStyleResultsIfFailed
checkstyleMain
के बाद निष्पादित करने के लिए सेट हैfinalizedBy
द्वारा कोई फर्क नहीं पड़ता।checkstyleMain
विफल होने पर भी यह निष्पादित होगा। यहaCheckFailed
संपत्ति का उपयोग यह निर्धारित करने के लिए करता है किcheckstyleMain
सफलतापूर्वक पूरा हुआ था या नहीं।
यह ठीक काम करता है अगर मैं एक पूर्ण निर्माण करता हूं। लेकिन अगर मैं सिर्फ आंशिक पुनर्निर्माण करता हूं और चेकस्टाइल मुख्य कार्य नहीं चलता है, क्योंकि इसका पूरा परिणाम पहले से ही अद्यतित है, तो मैं aCheckFailed
के साथ सत्य होने के साथ समाप्त होता हूं, क्योंकि checkstyleMain
नहीं चला था, जो इसे वास्तव में कुछ ऐसा लगता है गड़बड़ हो गया।
तो मैं अपने showCheckStyleResultsInBrowser
कार्य को निष्पादित कैसे कर सकता हूं यदि केवल चेकस्टाइलमेन कार्य विफल हो जाए? इसके अलावा, मेरा समाधान जो भी हासिल करता है उसके लिए भी बोझिल और हैकी महसूस करता है। क्या कोई आसान तरीका है?
यह वास्तव में इसे बहुत अच्छा धन्यवाद देता है। –
@ पीटर Niederwieser सच है, यदि संभव हो तो मैं वास्तविक जांच परिणाम का उपयोग करना चाहता हूं। लेकिन अभी के लिए मैं कार्य के परिणाम के आधार पर आम तौर पर कुछ कैसे करना चाहता था। लेकिन यदि आप जानते हैं कि चेक स्टाइल के उल्लंघन की वास्तविक सूची कैसे प्राप्त करें, तो यह बहुत अच्छा होगा। वर्तमान में, सब कुछ जो चेक शैली में "त्रुटि" नहीं है, कार्य को सफलतापूर्वक पूरा कर देता है, जिसका अर्थ है कि मैं कोई परिणाम नहीं दिखाऊंगा। –
@ जोचिमकुर्ज़ फिर से इसके बारे में सोचते हुए, मुझे इस से बेहतर समाधान नहीं पता है। अपने मूल कोड के बारे में, ध्यान दें कि 'कार्य # निष्पादन' एक आंतरिक विधि है और इसे उपयोगकर्ता कोड से नहीं बुलाया जाना चाहिए। इसके बजाय मैं 'शो चेक स्टाइल रीसेट्सफफेल' एक और 'एक्ज़ेक' कार्य कर दूंगा। दो कार्यों को एक बार में कॉन्फ़िगर किया जा सकता है, लेकिन शायद यह इसके लायक नहीं है। –