2012-12-28 41 views
10

कोड संकलित किए बिना, मैं जीसीसी या क्लैंग को चेतावनियों की रिपोर्ट करना चाहता हूं।
क्या स्थिर विश्लेषण के लिए केवल संकलक चलाने के लिए संभव है?
मुझे कंपाइलर चेतावनी झंडे को पारित करने का तरीका नहीं मिल रहा है और इसे संकलित नहीं करने के लिए कहें।मैं स्थिर विश्लेषण के लिए जीसीसी/क्लैंग कैसे चला सकता हूं? (केवल चेतावनियां)

संपादित करें: बस में पाया गया कि बजना एक static analyser

+5

'-fsyntax-only' आज़माएं। –

+0

@KerrekSB सही! धन्यवाद –

+0

@KerrekSB: इसे उत्तर देने के लिए ले जाएं :) – Jack

उत्तर

10

दोनों जीसीसी है और बजना एक विकल्प -fsyntax-only करता है कि संकलक केवल किसी भी वास्तविक संकलन के बिना वाक्य रचना की जाँच प्रदर्शन किया है।

+6

हालांकि यह ध्यान रखना महत्वपूर्ण है कि ध्वज क्लैंग के लिए बहुत उपयोगी है, जी ++ के लिए यह टेम्पलेट इंस्टेंटेशन नहीं करता है, जिसका अर्थ है बहुत संभावित निदान की याद आती है –

4

अन्य उत्तरों के अलावा, gcc संकलन के दौरान कुछ विश्लेषण कर रहा है (और कुछ अनुकूलन पास के दौरान भी)। तो आप जेनरेट कोड को त्याग सकते हैं और फिर भी सभी चेतावनियां उदा। gcc -Wall -O -c code.c -o /dev/null

ध्यान दें कि आप अपने अतिरिक्त पास के साथ कुछ अतिरिक्त, आवेदन विशिष्ट, चेक और चेतावनियां कर सकते हैं, उदाहरण के लिए जीसीसी का विस्तार कर सकते हैं। MELT (जीसीसी का विस्तार करने के लिए एक उच्च स्तरीय डोमेन विशिष्ट भाषा) के साथ।

यदि आप मजबूत स्थिर विश्लेषण चाहते हैं और उस उद्देश्य के लिए अतिरिक्त एनोटेशन देने के इच्छुक हैं तो Frama C पर विचार करें।