क्या मुझे पता है कि वर्तमान में कोई उपकरण है जो सभी चीजों को आपने उल्लेख किया है करता है से, लेकिन वहाँ एक है कि सफाई अप्रयुक्त शीर्ष लेख शामिल करने में मदद करता है: include-what-you-use
"शामिल करें क्या आप का उपयोग "इसका मतलब है: प्रत्येक प्रतीक (प्रकार, फ़ंक्शन वैरिएबल, या मैक्रो) के लिए जो आप foo.cc में उपयोग करते हैं, या तो foo.cc या foo.h # उस फ़ाइल को शामिल करना चाहिए जो उस प्रतीक की घोषणा को निर्यात करता है। इसमें शामिल हैं-आप-उपयोग उपकरण एक प्रोग्राम है जिसे क्लैंग लाइब्रेरीज़ के साथ बनाया जा सकता है ताकि को खोजने के लिए स्रोत फ़ाइलों के समावेशन का विश्लेषण किया जा सके- आप किस प्रकार के उल्लंघन का उपयोग करते हैं, और उनके लिए फ़िक्स का सुझाव देते हैं।
शामिल करने का मुख्य लक्ष्य-आप-उपयोग का उपयोग अनिवार्य # शामिल करने के लिए है। यह दोनों यह पता लगाने के द्वारा करता है कि # फ़ाइल को वास्तव में इस फ़ाइल (.cc और .h फ़ाइलों दोनों के लिए) के लिए आवश्यक नहीं है, और # को प्रतिस्थापित करने के साथ-साथ आगे की घोषणाओं के साथ शामिल करता है।
एक उम्मीद कर सकते हैं कि Clang static analyzer इस करना होगा, लेकिन मैं क्या the availalbe checks देखने से ऐसी बातें नहीं करते हैं।
यह विश्लेषक suggest a feature request को किसी के लिए एक अच्छा समय हो या Clang Tools
इस बीच में वर्णित उपकरणों के साथ एक समान बराबर LibTooling का उपयोग कर एक अलग उपकरण बना सकता है, मैं तुम्हें सक्षम सुझाव देंगे - दीवार और -Wextra संकलक झंडे, जो (दूसरों के बीच) के बाद चेतावनी ट्रिगर किया जाएगा (नीचे जीसीसी डॉक्स देखें):
- -Wunused-समारोह
- -Wunused-लेबल
- -Wunused-मूल्य
- -Wunused-चर
- -Wunused पैरामीटर
- -Wunused बल्कि सेट पैरामीटर
यदि के लिए कुछ कारण आप ऐसा नहीं करना चाहते हैं, तो आप केवल जोड़ सकते हैं- का उपयोग किया गया है जो केवल उपर्युक्त विकल्पों को संयुक्त करेगा, बिना किसी अन्य झंडे के - जो वाल या -वेक्स्ट्रा जोड़ता है।
लेकिन आदेश एक अप्रयुक्त समारोह पैरामीटर बारे में एक चेतावनी प्राप्त करने के लिए, आप निर्दिष्ट करना होगा या तो -Wextra -Wunused (ध्यान दें कि -Wall तात्पर्य -Wunused), या अलग से -Wunused पैरामीटर निर्दिष्ट करें।
बेशक , इसका मतलब है आप सफाई करना है कि मैन्युअल
आप अतिरिक्त पंडिताऊ आप के रूप में अच्छी -pedantic जोड़कर त्रुटियों में सभी चेतावनियों कन्वर्ट कर सकती होना चाहते हैं -errors ध्वज
अधिक जानकारी के लिए GCC Warnings Options documentation पढ़ें।
शायद [क्लैंग स्थिर विश्लेषक] (http://clang-analyzer.llvm.org/) अर्थपूर्ण विश्लेषण के लिए? –
असल में, क्लैंग सामान्य संकलन के दौरान भी अप्रयुक्त चर और कार्यों पर चेतावनी देता है। – ltjax
ऐसा लगता है कि यह कठिन है। आप कैसे जानते हैं कि #include का उपयोग नहीं किया गया है? मेरा मतलब है कि आपके पास # डिफिन की तरह कुछ हो सकता है जो 'malloc_dbg()' पर 'malloc_dbg()' पर है और फिर यह उस फ़ाइल को शामिल किए बिना और बिना संकलित करता है, केवल व्यवहार में परिवर्तन होता है। – sharptooth