2012-11-11 34 views
8

के साथ सभी फ़ंक्शंस पर लागू करें क्या GCC को चेतावनी_unused_result सभी फ़ंक्शन के लिए ध्वज को इसी विशेषता के साथ ध्वज देना संभव है? क्योंकि अगर मैं वापसी मूल्य की जांच करना भूल सकता हूं, तो मैं जीसीसी विशिष्ट विशेषता को भी जोड़ना भूल सकता हूं।चेतावनी_unused_result GCC

मैंने इसे कुछ अन्य कंपाइलरों के साथ संभव माना है।

+0

प्रलेखन मैं कहूंगा कि जवाब नहीं है की समीक्षा करने से। –

+0

वैकल्पिक: आप अपने कार्यक्रमों को स्प्लिंट के माध्यम से चला सकते हैं, अनदेखा वापसी मूल्यों के लिए परीक्षण: http://www.splint.org – justin

+0

कौन से कंपाइलर्स इसका समर्थन करते हैं? – sinelaw

उत्तर

1

नहीं, आप केवल -Wno-unused-result लेकिन संबंधित -Wunused-result के साथ सभी warn_unused_result झंडे की अनदेखी करने के जीसीसी बता सकते हैं केवल डिफ़ॉल्ट सेट (केवल झंडे पर चेतावनी देने के लिए)। -Wall -Wextra -pedantic के साथ संकलन को चेतावनी ट्रिगर करनी चाहिए अगर इसे सक्रिय किया जा सकता है लेकिन ऐसा नहीं होता है, इसलिए यह नहीं हो सकता है।

इसके अलावा, मुझे आश्चर्य है कि आप यह क्यों चाहते हैं, यह कार्यों के नतीजे को अनदेखा करना असामान्य नहीं है, और सभी पुस्तकालयों में कई चेतावनियां उत्पन्न होने की संभावना है।

+2

हम अपनी खुद की लाइब्रेरी लिख रहे हैं और हम जितना संभव हो उतना त्रुटियों को बाहर करना चाहते हैं। कई दिन पहले मैंने देखा है कि हमारे प्रोग्रामर में से एक ने __fread__ के परिणाम की जांच नहीं की है। दरअसल, ऐसा मामला काफी दुर्लभ है, लेकिन अगर यह एम्बेडेड मशीन पर कम संसाधनों के कारण होता है, तो हमारे lib को मास्टर ऐप को क्रैश किए बिना इसे संभालना होगा। इसलिए, हम जितना संभव हो उतने चेक का पालन करना चाहते हैं। – PoltoS

+0

@ पोल्टो: यदि आप सी ++ का उपयोग कर रहे थे तो रिटर्न प्रकारों को लपेटने का एक तरीका हो सकता है, लेकिन यह 'warn_unused_result' जैसे कम या कम काम करेगा। – bitmask

+0

हम सी का उपयोग कर रहे हैं ... अजीब है कि जीसीसी ऐसा ध्वज प्रदान नहीं करता है। हो सकता है कि यह "वर्चुअल" को प्रत्येक फंक्शन में ऐसा ध्वज जोड़ने के लिए थोड़ा सा है? – PoltoS

0

हालांकि यह जीसीसी के साथ संभव नहीं लगता है, आप इन्हें पकड़ने के लिए स्थिरता और लिंट जैसे स्थिर विश्लेषक चला सकते हैं।

+0

लगभग 5 वर्षों के बाद अच्छा जवाब;) गरीबी एक एसएएएस है। मैं कंपनी के कोड को किसी तीसरे पक्ष के सर्वर पर अपलोड नहीं कर सकता। इसके अलावा तीसरे भाग सर्वर को मेरे पर्यावरण और सिस्टम के बारे में कुछ भी नहीं पता है। मुझे अभी तक अच्छे स्थिर विश्लेषकों को नहीं मिला है जो मंच विशिष्ट प्रकारों पर शिकायत नहीं करते हैं। – PoltoS

+0

मुझे यकीन नहीं है कि कवरेज केवल सास ही पेशकश कर रहा है या नहीं। मेरा नियोक्ता कवरेज का उपयोग करता है और मेरा मानना ​​है कि कोई कोड संगठन के सर्वर को छोड़ देता है। https://community.synopsys.com/s/question/0D53400003RpaYWCAZ/can-coverity-connect-be-installed-in-an-isolated- पर्यावरण – Soorajchirag

0

elfs-clang-plugins (स्वयं द्वारा लिखित, ओपन सोर्स) में एक क्लैंग प्लगइन है जो मदद करता है।

जीसीसी के लिए नहीं, यह अभी भी उपयोगी हो सकता है उदा। यदि आप इसे अपनी सीआई गेटकीपिंग प्रक्रिया में जोड़ सकते हैं (यदि आपके पास कोई है) या थोड़ी देर में इसे मैन्युअल रूप से चलाएं।

चेतावनी_unused_result प्लगइन उन कार्यों के लिए चेतावनी उत्सर्जित करेगा जो में चेतावनी_unused_result विशेषता नहीं है। प्लगइन केवल वर्तमान संकलन इकाई में घोषित या परिभाषित कार्यों को मानता है, इसलिए बाहरी पुस्तकालय शोर नहीं जोड़ते हैं।

प्लगइन एक वैकल्पिक तर्क स्वीकार करता है, - केवल वही है जो केवल स्थिर कार्यों के बारे में चेतावनी देता है (जब बाहरी एपीआई बदलना बहुत अधिक काम होता है)।

उदाहरण:

int foo(void); 

संकलक उत्पादन:

/tmp/test.c:1:5: warning: missing attribute warn_unused_result 
int foo(void);