2010-02-11 11 views
36

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

मैं xcodebuild आउटपुट को कैप्चर करने और इसे फ़िल्टर करने का एक तरीका ढूंढ रहा हूं। यह एक पाइथन समाधान पसंद करेगा जो पाइप के साथ काम करेगा लेकिन जब तक वे कमांड लाइन आधारित समाधान हैं, तब तक मैं अन्य दृष्टिकोणों के लिए खुला हूं।

क्या कोई उपकरण जो पहले से ही ऐसा करने में सक्षम हैं?

उत्तर

17

केवल त्रुटि उत्पादन संदेश देखने के लिए, इस तरह/dev/बातिल को मानक आउटपुट (एक विशेष फ़ाइल कि एक ब्लैक होल के रूप में काम करता है) अनुप्रेषित:

xcodebuild > /dev/null

आप त्रुटि आउटपुट को कैप्चर करना चाहते हैं एक फ़ाइल में, आप कर सकते हैं:

xcodebuild 2> ./build_errors.log
35

यह मेरे लिए पर्याप्त नहीं है।/Dev/null पर पिपिंग सिर्फ आपको दिखाएगा कि एक बिल्ड विफल रहा है, लेकिन आपको कारण क्यों नहीं दिख रहा है। आदर्श रूप से हम सभी सफल संकलक आदेशों के बिना केवल त्रुटियों और/या चेतावनियों को देख सकते थे।

xcodebuild | grep -A 5 error: 
+19

या 'xcodebuild | egrep -A 5 "(त्रुटि | चेतावनी):" ' – v01pe

+10

या 'egrep'^(/ .+: [0-9 +: [0-9] +:। (त्रुटि | चेतावनी): | घातक | ===) '-' यह भी कहने के लिए कि xcodebuild क्या करने जा रहा है। – PatchyFog

33

एक रूबी मणि xcpretty कहा जाता है:

यह मूलतः काम करता है।

यह xcodebuild के आउटपुट को फ़िल्टर करता है और विभिन्न स्वरूपण और रंग भी प्रदान करता है।

+2

कृपया इस उत्तर को वोट दें, यह टूल शानदार है और समस्या को हल करने के लिए grep – hariseldon78

+1

से बेहतर है यह टूल शानदार है!मैंने इसे पहले क्यों नहीं खोजा है ?! –

+0

xcpretty xcodebuild के संयोजन के रूप में उपयोग करने के लिए एक उपयोगी उपकरण है। – AhiyaHiya

0

मुझे मानव के रूप में देखने के लिए xcpretty पसंद है, लेकिन मुझे कहीं और प्रचार के लिए स्वचालित सेटिंग में बिल्ड त्रुटियों को खोजने की आवश्यकता थी, और मैं यह सुनिश्चित करना चाहता था कि मैंने केवल प्रासंगिक जानकारी प्राप्त की है।

xcodebuild | sed -nE '/error:/,/^[[:digit:]] errors? generated/ p' 

आउटपुट::

main.c:16:5: error: use of undeclared identifier 'x' 
    x = 5; 
    ^
main.c:17:5: error: use of undeclared identifier 'y' 
    y = 3; 
    ^
2 errors generated. 
24

उपयोग xcodebuild -quiet निम्नलिखित एसईडी आदेश उस उद्देश्य कार्य करता है।

xcodebuild आदमी पेज के अनुसार:

-quiet: चेतावनी और त्रुटियों के अलावा कोई भी उत्पादन मुद्रित न करें।

बोनस: कोई अन्य उपकरण आवश्यक नहीं है! (हालांकि मुझे xcodebuild | xcpretty भी पसंद है)

मैं ट्रेविस सीआई के साथ निर्माण करता हूं, जो 4 एमबी लॉग के बाद शिकायत करता है। इस तर्क ने समस्या हल की।

+1

इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। धन्यवाद! – Ruenzuo

+0

दुर्भाग्य से, केवल एक्सकोड 8+ के लिए काम करता है। पिछले एक्सकोड्स के लिए @rosejn द्वारा उत्तर देखें। – kambala

1

enter image description here

-quiet अब में यह करने के लिए सबसे अच्छा तरीका है।

संबंधित मुद्दे