स्थैतिक विश्लेषण एक सॉफ्टवेयर का विश्लेषण करने की प्रक्रिया है, इसे निष्पादित किए बिना। यह बहुत अच्छा और अनुशंसित है, लेकिन आपको यह ध्यान रखना होगा
- अलग-अलग स्थैतिक विश्लेषण उपकरणों में उनके द्वारा पढ़े जाने वाले कोड की अलग-अलग समझ होती है, इसलिए वे अलग-अलग मुद्दों का संकेत (या संकेत नहीं) दे सकते हैं। एक उपकरण एक साफ रिपोर्ट दे सकता है, और दूसरा एक लाख चीजों के बारे में शिकायत कर सकता है।
- एक डायनेमिक टूल (उदाहरण के लिए, वेलग्रिंड के बारे में सोचें) संसाधन खपत (समय, मेमोरी उपयोग) पर एक गंभीर बोझ की कीमत पर, कई अन्य मुद्दों को पा सकते हैं। ऐसा इसलिए है क्योंकि आप आमतौर पर सॉफ़्टवेयर का इंस्ट्रूमेंटेड संस्करण चला रहे हैं। ध्यान दें कि, किसी तरह से इंस्ट्रूमेंट होने से (अपने मॉलोक को डिबगिंग मॉलोक से बदल दें) यह आपके सॉफ़्टवेयर के समान नहीं है (जैसा कि आप निष्पादन के समय से देख सकते हैं)
ये दोनों दृष्टिकोण संदर्भ की कमी से ग्रस्त हैं: वे नहीं जानते कि क्या हासिल करना है।
कोड की समीक्षा एक अन्य कोडर द्वारा की जाती है, जो माना जाता है कि यह जानता है और जांच कर सकता है
- यदि कोड सही है
- यदि सॉफ्टवेयर शब्दार्थ रूप से सही है।
यह बहुत अधिक महंगा है और इसमें पुनरावृत्ति की एक अलग डिग्री है लेकिन एक बड़ी मदद है।
हमेशा की तरह, एक भी चांदी की गोली नहीं है जो सभी कीड़े को ठीक कर देगी और सभी समस्याओं से बच जाएगी। लागू करना - जितना संभव हो उतना जगह, कोड, समय, चेक के तीन रूपों (स्थिर, गतिशील, अधिक आँखें (और दिमाग) वास्तव में कोड को देख रहा है) की सिफारिश की जाती है।
पीएस: मुझे ध्यान देना चाहिए कि खरोंच से उपकरण को लागू करना आमतौर पर बहुत बेहतर होता है। झूठी सकारात्मकता के कारण विरासत प्रणाली को परिवर्तित करना बहुत कम आनंददायक अनुभव है। यदि आप खरोंच से शुरू करते हैं और हमेशा विश्लेषण उपकरण को साफ रखने का लक्ष्य रखते हैं, तो आप शायद बहुत सारी समस्याओं से बचेंगे।
pps: टूल्स के लिए, यह भाषा पर निर्भर करता है। सी और सी ++ दुनिया में आप विज़ुअल स्टूडियो को देखकर शुरू कर सकते हैं, जिसमें एक अंतर्निहित स्थैतिक विश्लेषण उपकरण होता है। विकिपीडिया पर अपेक्षाकृत पूरी सूची मिल सकती है।
ppps: स्थैतिक विश्लेषण स्थिर भाषाओं के लिए अधिक अनुकूल है, जैसे C या C ++। पायथन के लिए यह कहना वास्तव में मुश्किल हो सकता है कि क्या एक नाम जो एक बिंदु पर एक सूची को संदर्भित करता है, बाकी कार्यक्रम के लिए एक सूची को संदर्भित करेगा, इसके गतिशील गुणों के कारण। इसका मतलब यह नहीं है कि कुछ भी नहीं किया जा सकता है, PyPy शो की तरह एक JIT प्रयास के रूप में ।