2012-12-06 5 views
13

मैं जोड़ दिया है सब कुछ का उपयोग करते हुए और मैं अपने SConstruct बदलाव किया है उचित वातावरण चर सेट करने के लिए, इन उत्तरों के अनुसार [1, 2, 3]। अब जब मैं

scan-build --use-c++=`which clang++` scons 

चलाने का निर्माण शुरू होता है, और मैं देख सकता हूँ प्रक्रिया scons द्वारा काँटेदार

/path/to/c++-analyzer ... -std=c++11 ... 

वस्तु फ़ाइल सफलतापूर्वक बनाता है, लेकिन फिर मैं कोई त्रुटि मिलती है:

could not find clang line 

यह त्रुटि c++-analyzer में होती है जब फोर्क प्रक्रिया में स्ट्रिंग -cc1 नहीं होती है। लेकिन अगर मैं ps aux जाँच, मैं स्पष्ट रूप से देख

/path/to/clang -cc1 ... 

कैसे कार्यक्रम ठीक से बना सकते हैं, लेकिन स्थिर विश्लेषक इस तरह असफल?


संदर्भ के लिए, यदि मैं मैन्युअल रूप से चलाने के

scan-build clang++ <parameters from scons> 

तो निर्माण सफल होता है और रिपोर्ट उत्पन्न होता है!

मैं भी

env["ENV"]["PATH"] = os.environ["PATH"] 

जोड़ने और फिर

CXX="scan-build clang++" scons 

चल मैं सिर्फ scons पर ही scan-build नहीं चल सकता एक असंशोधित SConstruct साथ द्वारा "धोखा" कर सकते हैं।

+0

आपके प्रश्न का उत्तर पहले से जुड़े उत्तर में दिया गया है: "स्कैन आमतौर पर निर्माण चलाने से पहले पर्यावरण को साफ़ करता है (यह एक विशेषता है)।" –

+0

@ औद्योगिक-एंटीड्रिप्रेसेंट मैं पहले से ही पर्यावरण चर का उपयोग करता हूं जो ग्रेग सुझाता है। मैं क्लैंग और स्कॉन्स के माध्यम से * निर्माण * कर सकता हूं ठीक है; मैं * स्थिर विश्लेषक * नहीं चला सकता। – chrisaycock

+0

हम्म, स्कैन-बिल्ड --use-analyzer =/path/to/clang –

उत्तर

4

समस्या यह है कि execution environment में खोज पथ पर नहीं है। यह बताता है कि लाइन env["ENV"]["PATH"] = os.environ["PATH"] जोड़ने से समस्या हल हो जाती है।

एक असंशोधित SConstruct पर scan-build चलाने के लिए आप खोज निष्पादन वातावरण, उदाहरण के द्वारा प्रयोग किया जाता पथ पर बजना निष्पादन योग्य (clang++ और संभवतः clang) डाल सकते हैं /usr/bin/clang++ से लिनक्स पर अपने /path/to/clang++ पर एक प्रतीकात्मक लिंक बनाकर।

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