मैं XCode का उपयोग नहीं करते, लेकिन मेरे लिए निम्नलिखित काम करता है लिनक्स में स्कैन-निर्माण का उपयोग कर। मैं अपना मामला, मैं सभी पहली पार्टी, गैर-जेनरेट कोड पर स्थिर विश्लेषण चलाने के लिए चाहता हूं। हालांकि, मैं इसे तीसरे_party कोड और जेनरेट कोड पर चलाने से बचना चाहता हूं।
कमांड लाइन पर, क्लैंग-विश्लेषक को निर्माण में लगाया जाता है जब स्कैन-बिल्ड सीसी और सीईओ पर्यावरण परिवेश सीसीसी-विश्लेषक और सी ++ - विश्लेषक स्थानों को सेट करता है। मैंने ccc-analyzer.py और C++ - analyzer.py नामक दो सरल स्क्रिप्ट लिखीं और उन्हें डिफॉल्ट के स्थान पर संकलन में लगा दिया। इन रैपर स्क्रिप्ट में, मैंने बस फ़ाइल को संकलित करने के पथ को देखा और फिर कच्चे कंपाइलर को सीधे चलाया (यदि मैं स्थैतिक विश्लेषण से बचना चाहता हूं) या सी * -एनालिज़र (यदि मैं स्थिर विश्लेषण के लिए चाहता हूं)। मेरे स्क्रिप्ट अजगर में है और मेरी विशिष्ट निर्माण प्रणाली से बंधा है, लेकिन एक उदाहरण की जरूरत है कि संशोधन के रूप में:
import subprocess
import sys
def main(argv):
is_third_party_code = False
for i in range(len(argv)):
arg = argv[i]
if arg == '-c':
file_to_compile = argv[i + 1]
if '/third_party/' in file_to_compile or \
file_to_compile.startswith('gen/'):
is_third_party_code = True
break
if is_third_party_code:
argv[0] = '/samegoal/bin/clang++'
else:
argv[0] = '/samegoal/scan-build/c++-analyzer'
return subprocess.call(argv)
if __name__ == '__main__':
sys.exit(main(sys.argv))
एप्पल http://devforums.apple.com पर एनडीए के तहत जारी की उत्पादों की गोपनीय चर्चा के लिए एक सभ्य मंच है इस तरह के प्रश्नों का उत्तर ऐप्पल लोक और अन्य खुला डेवलपर्स द्वारा दिया जा सकता है। – cdespinosa
(जब तक आप http://clang.llvm.org/StaticAnalysis.html पर स्कैन-बिल्ड टूल का उपयोग करने के बारे में नहीं पूछ रहे हैं, जो वास्तव में सार्वजनिक है। उस स्थिति में, केवल उन स्रोत फ़ाइलों को सूचीबद्ध करें जिन्हें आप विश्लेषण करना चाहते हैं, जैसा दिखाया गया है उस पृष्ठ पर मूल उपयोग में।) – cdespinosa
मैं सिर्फ स्कैन-निर्माण टूल के बारे में बात कर रहा हूं। दुर्भाग्यवश, मूल उपयोग के तहत, इसमें विश्लेषण से फ़ाइलों को छोड़ने के बारे में कुछ भी नहीं है। यदि आप किसी प्रोजेक्ट पर स्कैन-बिल्ड का उपयोग कर रहे हैं, तो यह डिफ़ॉल्ट रूप से उस परियोजना के भीतर की सभी फ़ाइलों का विश्लेषण करता है, जिसमें मेरी विशाल स्थैतिक लाइब्रेरी भी शामिल है। –