स्थैतिक विश्लेषण के नुकसान से कैसे बचें


17

मैं एक कंपनी में काम कर रहा हूं जो जोएल टेस्ट में 11 स्कोर करेगी - कम से कम कागज पर।

व्यवहार में, हालांकि, कुछ भी काफी उम्मीद के मुताबिक काम नहीं करता है, और यह परियोजना डेफ़न 1 पर आधे साल के लिए है। अब, मेरे अधिकांश साथी खुश हैं यदि वे रविवार शाम 6 बजे घर वापस जा सकते हैं।

स्पष्ट रूप से अच्छी प्रथाओं में से एक, जिसने मुझे काम नहीं करने के रूप में मारा, स्थैतिक विश्लेषण उपकरण का उपयोग है। परियोजना दोनों gcc-wall चेतावनियों और एक स्वामित्व और बहुत महंगी "C / C ++" टूल को ट्रैक करती है ।

Gcc चेतावनियाँ वास्तविक (यदि अधिकांश समय अप्रभावी) बग की ओर इशारा नहीं करती हैं तो अधिक बार करती हैं।

मालिकाना उपकरण, हालांकि, ऐसी चीजों को सूचीबद्ध करते हैं जैसे कि अंतर्निहित जातियां और एक स्ट्रिंग शाब्दिक आकार। उनकी शैली की किताबों पर नकली कलाकारों को भी ब्लैकलिस्ट किया गया है।

मानक अभ्यास यह है कि लोगों को हर एक चेतावनी को बंद करने के लिए दबाया जाता है। ध्यान दें कि यह उन चेतावनियों को बाहर करता है जो मुख्य रूप से गलत सकारात्मक हैं, यह समस्या नहीं है।

परिणाम है:

  1. लोग हर रिवायत में टाइप कास्ट जोड़ते हैं और हर तर्क को प्रक्रिया में वास्तविक समस्याग्रस्त प्रकार बेमेल छिपाते हैं।
  2. लोग एक कीड़े से परिचय कराते हैं, या एक अलग समस्याग्रस्त भाषा सुविधा का उपयोग करते हैं।
  3. चेतावनियों को चुप करा दिया जाता है।
  4. बग रिपोर्ट में रोलिंग शुरू होती है।

मुख्य बिंदु यह है कि मूल कोड उन लोगों द्वारा काम और लिखा गया था जो अपनी भाषा क्षमताओं के भीतर सुरक्षित खेल रहे थे, जबकि फिक्स नहीं थे।

अब, मुझे नहीं लगता कि वास्तव में इस कंपनी को बचाया जा सकता है। हालांकि, मैं जानना चाहता हूं कि क्या कोई बेहतर, अधिमानतः काम करने का तरीका है, "प्रो" टूल का उपयोग करने का तरीका या अगर मुझे भविष्य में निर्णय लेने वाला है तो मुझे पूरी तरह से उपयोग करने से बचना चाहिए।

एक समाधान जो सभी प्रोग्रामर को नहीं मानता है वह जीनियस हैं जो गलत नहीं कर सकते हैं। क्योंकि ठीक है, अगर वे हैं, तो पहली जगह में उपकरण का उपयोग करने की कोई आवश्यकता नहीं है।


1
साइड नोट: GCC के अलावा «-Wall» में «-Wextra» विकल्प भी है, और इससे भी अधिक चेतावनियां जो दोनों मेटाटेशन में किसी कारण से शामिल नहीं हैं। अधिक जानकारी के लिए डॉक्स देखें । सामान्य तौर पर हर विकल्प में एक उल्लेख होता है यदि यह एक मेटाऑप्शन से सक्षम होता है। तो यह पता लगाने के लिए कि आप सक्षम नहीं हैं, आप सभी शब्दों पर सभी शब्दों को उजागर करना चाहते हैं «-Wall» और «-Wextra», और आप देखेंगे कि अभी तक इसका उपयोग नहीं किया गया है।
हाय-एंजेल

मैं यह भी जोड़ता हूं कि मुझे आश्चर्य है कि GCC ने «-Wextra» के «-Wall» में बहुत कुछ शामिल नहीं किया। मेरा विश्वास करो, इनमें से कुछ झंडे अतिरिक्त उपयोगी हैं ; कम से कम इन चेतावनियों ने मुझे एक घंटे की बहस से मुक्त कर दिया।
हाय-एंजेल

1
मुझे आश्चर्य है कि किसी ने उत्तर में कोड समीक्षाओं का उल्लेख नहीं किया है। मेरे लिए, कुछ भद्दे हैक्स में चुपके करने की कोशिश कर रहे लोगों को कोड
रिव्यू

जवाबों:


16

व्यवहार में, हालांकि, कुछ भी काफी उम्मीद के मुताबिक काम नहीं करता है, और यह परियोजना डेफ़न 1 पर आधे साल के लिए है। अब, मेरे अधिकांश साथी खुश हैं यदि वे रविवार शाम 6 बजे घर वापस जा सकते हैं।

यह निश्चित रूप से आपकी समस्या का एक अच्छा हिस्सा है। एक सॉफ्टवेयर इंजीनियर 40hours / सप्ताह से अधिक के लिए उत्पादकता से काम नहीं कर सकता है। आपको लगता है कि इसके बाद के संस्करण जाना है, तो आप अपनी क्षमता बिंदु है जिस पर भी 80 घंटे काम करने के लिए काम करने के लिए के लिए गंभीर नुकसान कर / सप्ताह मूल्य की बहुत कम परियोजना के लिए कभी कभी लाता है, और, परियोजनाओं भी कर सकते हैं वापसी क्योंकि तुलना में टीम द्वारा प्रस्तुत अधिक त्रुटियों वे ठीक कर सकते हैं। यदि आप आधे साल के लिए 60 घंटे / सप्ताह या उससे अधिक कर रहे हैं, तो आपकी पूरी टीम को एक अच्छा लंबा ब्रेक चाहिए, और 40 घंटे / सप्ताह में वापस आना होगा। आप किसी ऐसे कार्यबल के साथ कुछ भी हल नहीं कर सकते हैं जो कीबोर्ड पर कोसने में सक्षम है क्योंकि वे बहुत अधिक काम कर रहे हैं।

मालिकाना उपकरण, हालांकि, ऐसी चीजों को सूचीबद्ध करते हैं जैसे कि अंतर्निहित जातियां और एक स्ट्रिंग शाब्दिक आकार। उनकी शैली की किताबों पर नकली कलाकारों को भी ब्लैकलिस्ट किया गया है।

आपको वास्तव में या तो उपकरण को पूरी तरह से छोड़ने की ज़रूरत है, या इसे फिर से कॉन्फ़िगर / प्रतिस्थापित करना है। हर अंतर्निहित कास्ट पर चेतावनी किसी से निपटने के लिए बहुत अधिक है।


क्या आप कृपया 40 घंटे एक सप्ताह की सीमा के लिए एक शोध का संदर्भ प्रदान कर सकते हैं?

11
यहाँ और यहाँ , बस शुरुआत के लिए। यह बहुत अच्छी तरह से प्रलेखित है कि आप सप्ताह में 40 घंटे से अधिक उत्पादक कार्य नहीं कर सकते हैं। एक साधारण Google आपको लेखों के बारे में पढ़ेगा।
डेडएमजी जूल

5
दो छोटे, लेकिन IMHO महत्वपूर्ण सुधार: 40 घंटे / सप्ताह की सीमा एक अनुमानित औसत मूल्य है, और नियम केवल लंबे समय तक लागू होता है। एक टीम के लिए एक महत्वपूर्ण समय सीमा से पहले अतिरिक्त घंटों में डाल देना ठीक है, फिर बाद में पुनर्प्राप्त करें (शायद कुछ दिन की छुट्टी भी ले रहा है)। इसके अलावा, यह सीमा लोगों और समय के बीच भिन्न होती है - कुछ बिना समस्याओं के प्रति सप्ताह 43 घंटे काम कर सकते हैं, अन्य केवल 35, और दूसरों की तुलना में कुछ हफ्तों में अधिक उत्पादक होते हैं। हालांकि, एक पंक्ति में कुछ हफ़्ते से अधिक समय तक महत्वपूर्ण ओवरटाइम लगाना वास्तव में गंभीर परेशानी का कारण बनने वाला है।
पेर्ट टॉर्क

13

मैं एक कंपनी में काम कर रहा हूं जो जोएल टेस्ट में 11 स्कोर करेगी - कम से कम कागज पर।

यह परीक्षण सॉफ्टवेयर कंपनियों के लिए हल्के से प्रासंगिक है। मैं इसके बारे में प्रचार नहीं समझता। आप 12 स्कोर कर सकते हैं और अभी भी 100% बकवास प्रोग्रामर हैं। लोग औजारों से ज्यादा मायने रखते हैं।

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

सभी स्थिर विश्लेषणकर्ताओं के साथ यह सबसे बड़ी समस्या है: बहुत सारे झूठे सकारात्मक। इसे संभालने का एकमात्र तरीका विस्तार से सीखना है कि उपकरण को एक निश्चित मुद्दे के लिए चेतावनी देने के लिए क्यों सेट किया गया था। तभी आप इस बात की योग्य धारणा बना सकते हैं कि चेतावनी गलत है या नहीं।

निहित टाइपकास्ट के विशिष्ट कलाकारों के लिए, यह सी भाषा में कुछ बहुत ही सामान्य, सूक्ष्म और खतरनाक बगों के कारण होता है, सी में दो (नैतिक) निहित प्रकार के पदोन्नति नियमों के कारण होता है। वे औपचारिक रूप से पूर्णांक पदोन्नति नियमों और कलाकारों के रूप में जाने जाते हैं। सामान्य अंकगणितीय रूपांतरण । मुझे लगता है कि सभी पेशेवर सी प्रोग्रामरों में से दस में से एक से कम यह समझा सकता है कि ये दो नियम क्या करते हैं, और वे क्या नहीं करते हैं। और फिर भी ये नियम अत्यंत मौलिक हैं और किसी भी सामान्य सी कार्यक्रम में लाइनों के बीच हजारों बार लागू होते हैं।

MISRA-C मानक ने इन खतरनाक अंतर्निहित रूपांतरण नियमों की व्याख्या करने के लिए एक पूरा अध्याय समर्पित किया, और फिर उन्होंने निहित रूपांतरण के कारण बग से बचने के लिए कई जटिल नियम जोड़े। इससे बाजार के सभी स्थिर विश्लेषणकर्ताओं पर काफी प्रभाव पड़ा।

मैं किसी भी सी प्रोग्रामर को उस MISRA-C चैप्टर को पढ़ने के लिए, या बहुत कम से कम Google पर उन दो प्रचार नियमों का उल्लेख करने की सलाह दूंगा, जो आप कर सकते हैं। आप केवल स्थैतिक विश्लेषक की उपेक्षा कर सकते हैं जब आप इन नियमों के बारे में जानने के लिए सब कुछ जानते हैं।

अब, मुझे नहीं लगता कि वास्तव में इस कंपनी को बचाया जा सकता है। हालांकि, मैं जानना चाहता हूं कि क्या कोई बेहतर, अधिमानतः काम करने का तरीका है, "प्रो" टूल का उपयोग करने का तरीका या अगर मुझे भविष्य में निर्णय लेने वाला है तो मुझे पूरी तरह से उपयोग करने से बचना चाहिए।

एक समाधान जो सभी प्रोग्रामर को नहीं मानता है वह जीनियस हैं जो गलत नहीं कर सकते हैं। क्योंकि ठीक है, अगर वे हैं, तो पहली जगह में उपकरण का उपयोग करने की कोई आवश्यकता नहीं है।

इसके आसपास कोई आसान रास्ता नहीं है। वास्तविक समस्या वास्तव में उपकरण नहीं है, बल्कि अस्पष्ट सी भाषा है। यह एक संक्षिप्त नज़र में एक आसान भाषा हो सकती है, लेकिन लाइनों के बीच बहुत सारे अतार्किक और अजीब तंत्र चल रहे हैं। और भाषा में अपरिभाषित / अनिर्दिष्ट / impl.specific व्यवहार के सैकड़ों मामले भी हैं। उनमें से अधिकांश आपको सीखना चाहिए और बचना चाहिए।

तो आपको या तो एक अनुभवी सी प्रोग्रामर बनना चाहिए जो इन सभी अस्पष्ट चेतावनियों को समझता है, या आपको कम से कम एक ऐसे व्यक्ति के साथ एक टीम में होना चाहिए। कंपनियां जो केवल जूनियर प्रोग्रामर का एक समूह रखती हैं, जिनके पास टीम में कोई भी दिग्गज नहीं है, इन उपकरणों का उपयोग नहीं करना चाहिए, न ही उन्हें उच्च-अखंडता सॉफ्टवेयर विकास के साथ काम करना चाहिए।


मैंने शुरुआत से नमक की एक चुटकी के साथ परीक्षण लिया, लेकिन यह प्रोग्रामर का परीक्षण करने के लिए एक उपकरण नहीं है, बल्कि नियोक्ताओं का परीक्षण करने के लिए एक उपकरण है। मुझे लगता है कि आप उपयुक्त सहकर्मियों को "सर्वोत्तम उपकरण धन का भुगतान कर सकते हैं" शामिल कर सकते हैं। और मैं आपके उत्तर को एसए उपकरण को फेंकने के लिए लेता हूं, और बेहतर किराया और / या प्रशिक्षित करता हूं। पूर्व बिंदु आम भाजक लगता है।

@qpr यह नियोक्ता का परीक्षण नहीं करता है, बस नियोक्ता की सॉफ्टवेयर विकास पर पैसा खर्च करने की इच्छा है। भर्ती प्रक्रिया, कॉर्पोरेट लक्ष्य, बाजार ज्ञान आदि जैसी चीजों का उल्लेख नहीं किया गया है। मुझे लगता है कि अधिकांश "आईटी बबल" कंपनियां उस परीक्षण पर 12 स्कोर करेंगी, एक प्रबंधन के साथ जो यह भी नहीं जानता कि कौन से उत्पाद विकसित किए जा रहे हैं या यदि उनके लिए कोई बाजार है।

4

यह स्पष्ट नहीं है कि आप पूछ रहे हैं कि समस्या को कैसे ठीक किया जाए, या आप इसे पहली जगह में कैसे टाल सकते हैं। मैं बाद वाला मान रहा हूं।

ऐसा लगता है कि आप स्थैतिक विश्लेषण पर भरोसा कर रहे हैं और कीड़े का पता लगाने और बचने के अपने प्राथमिक साधन के रूप में। हो सकता है कि आप यूनिट परीक्षणों, और डायनेमिक टूल ... जैसे मेमोरी चेकर्स पर अधिक ध्यान केंद्रित कर रहे हों।

एक उपकरण पर भरोसा करना एक बुरा विचार है जो बहुत सारी झूठी सकारात्मकता उत्पन्न करता है, खासकर यदि आप उन झूठी सकारात्मक चीजों को दबा नहीं सकते हैं। यह थका हुआ / अति-कामित (या आलसी) प्रोग्रामर्स को चेतावनी को दूर करने के लिए "सुधार" करने के लिए प्रोत्साहित करता है। यदि आप चुनिंदा सकारात्मक (जैसे टिप्पणियों के साथ) या नियम को दर्जी नहीं दबा सकते हैं, तो आपको एक बेहतर उपकरण की आवश्यकता है। या कम से कम, आपको केवल संयम से इसका उपयोग करना चाहिए।

ऐसा लगता है कि आप लोगों के साथ लापरवाही बरतने और / या ओवरवर्क के कारण गलतियाँ करने में समस्या है। हो सकता है कि आपको कोड समीक्षाओं में अधिक समय / प्रयास खर्च करना चाहिए। यह सीधे आपके अवलोकन को संबोधित करता है कि प्रोग्रामर जीनियस नहीं हैं।

अंत में, ऐसा लगता है कि आप अवास्तविक समय सीमा के अंतर्गत पीड़ित हो सकते हैं, गरीब लोग आउटसोर्सिंग और / या आवश्यकताओं को स्थानांतरित कर रहे हैं। यह एक प्रबंधन समस्या है, और इसे उस स्तर पर संबोधित किया जाना है ... या फिर परियोजना की विफलता का काफी ऊंचा जोखिम है, और कर्मचारियों की उत्पादकता और मनोबल को दीर्घकालिक नुकसान है।


3

User29079 के उत्कृष्ट उत्तर के अलावा, मैं सी भाषा की एक और कमी जोड़ना चाहूंगा जो समस्या को जोड़ता है। मुझे इस कमी के बारे में पता नहीं था जब तक मैं जावा पर नहीं चला गया।

एक चेतावनी का उद्देश्य इस तथ्य के लेखक और भविष्य के पाठकों के ध्यान में लाना है कि कुछ गड़बड़ चल रहा है। यह, एक अवधारणा के रूप में, पूरी तरह से ठीक है: जितनी अधिक चेतावनियां आपने सक्षम की हैं, उतनी ही अधिक फिजूल चीजें जो आप खोजते हैं।

मृत गलत क्या है , यह धारणा है कि कोड को बदलकर हर एक छोटी मछलियों को हर कीमत पर तय किया जाना चाहिए । यही कारण है कि ओपी वर्णन कर रहा है कि समस्या का कारण बनता है: जल्दबाजी में चेतावनियाँ करने का प्रयास कोड को बदलकर दूर चला जाता है जो ठीक काम कर रहा है।

उसी समय, हम नहीं चाहते हैं कि हमारा कोड हमारे द्वारा संकलित किए जाने पर हर बार सैकड़ों चेतावनियों को उखाड़ फेंके, क्योंकि बहुत जल्द चेतावनियाँ अर्थहीन हो जाती हैं, और कोई भी नई चेतावनियों पर ध्यान नहीं देता है।

तो, यह परस्पर विरोधी लक्ष्यों का मामला लगता है; एक विरोधाभास।

इस असंभव प्रतीत होने वाले प्रश्न के लिए एक बहुत अच्छा समाधान है कि हम बयान के आधार पर किसी कथन पर एक निश्चित चेतावनी को दबाने में सक्षम हों, ताकि हम इसे ठीक उसी जगह दबा सकें, जहाँ हम संकेत करना चाहते हैं कि हम वास्तव में जानते हैं कि हम क्या कर रहे हैं, बिना किसी भी कोड को बदलने के लिए।

@SuppressWarnings( "" )एनोटेशन के साथ जावा के पास इसका एक अच्छा समाधान है । यदि आप बना रहे हैं, कहते हैं, जावा में एक अनियंत्रित रूपांतरण , संकलक आपके ध्यान में लाने के लिए एक चेतावनी जारी करता है, तो आप इसकी जांच करते हैं, आप यह निर्धारित करते हैं कि यह उन मामलों में से एक है जहां आप जानते हैं कि आप क्या कर रहे हैं, इसलिए आप एक @SuppressWarnings( "unchecked" )टिप्पणी के साथ अपमानजनक बयान से पहले जो केवल उस कथन को प्रभावित करता है जो तुरंत इसका अनुसरण करता है, और आप अपने जीवन के साथ आगे बढ़ते हैं।

तो, चेतावनी दूर हो जाती है, कोड अनलॉक्ड रहता है, और दमन का एनोटेशन वहाँ खड़ा होता है, सिंटैक्स हाइलाइटिंग के साथ रंगीन हरा, इस तथ्य को दस्तावेज करने के लिए कि एक iffy रूपांतरण हो रहा है, लेकिन लेखक का वादा अच्छा है। (*) सब खुश हैं।

जावा में आप अलग-अलग मापदंडों को काम करने के लिए भी उपसर्ग कर सकते हैं @SuppressWarnings(), ताकि एक विशिष्ट चेतावनी को निष्क्रिय कर सकें जो केवल उस विशिष्ट पैरामीटर पर जारी की जा सकती है।

हालाँकि, जहां तक ​​मुझे पता है, सी ने कभी भी बयानों पर चेतावनी को दबाने के लिए किसी भी मानक तंत्र का समर्थन नहीं किया, और कुछ कंपाइलरों ने अपने स्वयं के मालिकाना तंत्र को लागू किया, एक चतुर फैशन में ऐसा किया, उदाहरण के लिए #pragma warning (nnn:N)Microsoft C. के निर्देशों का निर्देश। यह है कि आपको किसी एक कथन के लिए चेतावनी को दबाने के लिए निर्देशों की दो पंक्तियों की आवश्यकता होती है और उस चेतावनी को उन बयानों के लिए सक्षम छोड़ दें जो अनुसरण करते हैं। इसलिए, सी प्रोग्रामर एक व्यक्तिगत बयान के आधार पर चेतावनी को दबाने की आदत को लेने की अत्यधिक संभावना नहीं रखते हैं, तब भी जब वे जानते हैं कि इस विशेष बयान पर यह चेतावनी ठीक है।


(*) कोई यह तर्क दे सकता है कि यदि आप इसकी अनुमति देते हैं, तो घर के प्रत्येक प्रोग्रामर को बिना कोई विचार दिए चेतावनी को दबा दिया जाएगा; इसका उत्तर यह है कि आप प्रोग्रामर को अपना काम बेहतर तरीके से करने में मदद करने के लिए सब कुछ कर सकते हैं, लेकिन अगर आप सक्रिय रूप से आपको तोड़फोड़ करने का निर्णय लेते हैं तो आप कुछ भी नहीं कर सकते हैं।


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

2

मैं कहूँगा (विवरणों को जाने बिना) कि आपकी कंपनी ने अधिक महत्वपूर्ण गलतियाँ की हैं और यह सिर्फ एक लक्षण है: यह टीम को ठीक से प्रबंधित करने और उचित लक्ष्यों को परिभाषित करने के लिए, उत्पादित सॉफ्टवेयर के डोमेन को ठीक से निर्धारित करने में विफल रहा ।

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

यदि, दूसरी ओर, आपकी टीम कुछ ऐसा लिख ​​रही है जो बहुत कम महत्वपूर्ण है, तो उच्च झूठी-सकारात्मक दर के साथ 'स्थैतिक विश्लेषण' उपकरण केवल आपको धीमा कर देगा, और, जैसा कि आपने उल्लेख किया है, लोग आमतौर पर इस पर प्रतिक्रिया देते हैं उनकी प्रभावशीलता में स्थानीय अधिकतम का पता लगाना, इस मामले में केवल अंतर्निहित कारण को ठीक करने की कोशिश करने के बजाय, चेतावनी के चारों ओर अपना रास्ता धोखा देकर। तो आपकी स्थिति में, इन उपकरणों का उपयोग वास्तव में स्रोत कोड की गुणवत्ता बिगड़ सकता है, और उन्हें आमतौर पर बचा जाना चाहिए।

यदि आपको एक सॉफ्टवेयर टीम को प्रबंधित करने की आवश्यकता है जो कुछ C या C ++ कोड लिख रही है, तो मैं कहूंगा कि मुख्य परियोजना लक्ष्य क्या हैं। यदि बग-मुक्त कोड लिखना अत्यंत महत्वपूर्ण है (उदाहरण के लिए, आईओएस और एंड्रॉइड के लिए नया सुपर भयानक सामाजिक ऐप इस पर फिट नहीं होता है ), तो स्थैतिक विश्लेषण का उपयोग करें, शायद यहां तक ​​कि औपचारिक विनिर्देश और औपचारिक सत्यापन तक जाएं। लेकिन अगर ऐसा है, तो अच्छे प्रोग्रामर का चयन करना और पर्याप्त कार्यभार और उचित 40 घंटे के सप्ताह के साथ एक समझदार वातावरण में काम करना कहीं अधिक महत्वपूर्ण है।

अगर वे गुलामों की तरह व्यवहार किए जाते हैं, तो लोग जिम्मेदारी से काम नहीं कर सकते हैं (और कोई मेरी छुट्टियों पर कब्जा कर रहा है, बिल्कुल यही है) और अच्छे प्रोग्रामर बस इसे नियमित रूप से करने से मना करेंगे, जब तक कि उन्हें कोई बेहतर पता न हो (और अगर वे अच्छे हैं, तो संभावना है वे करते हैं)।

नीचे बिंदु: अपने लक्ष्यों को चित्रित करें, फिर उपकरण और आपके द्वारा उपयोग की जाने वाली प्रक्रिया को निर्धारित करें, उपलब्ध साधनों को प्रक्रिया को परिभाषित न करने दें (लक्ष्यों को खराब करें) जैसा कि (बुरा) प्रबंधन आपको बाध्य करना चाह सकता है।


1

जैसा कि k.steff के उत्तर में कहा गया है, 'C' के लिए स्थैतिक विश्लेषण उपकरण उपयोगी हैं यदि आप गंभीर स्थिति (हवाई जहाज के सॉफ्टवेयर) में सॉफ़्टवेयर का निर्माण कर रहे हैं और उनका उपयोग पहले दिन से किया जाना चाहिए (विकास के महीनों के बाद नहीं जब एक गैर-प्रजनन योग्य बग उत्पन्न होता है )।

विकास प्रक्रिया में देर से इस प्रकार के उपकरणों का उपयोग करना आमतौर पर प्रक्रिया में जल्दी खराब होने वाले डिजाइन विकल्पों का संकेत है।

गैर-महत्वपूर्ण सॉफ़्टवेयर में, इस प्रकार के उपकरण उपयोगी होते हैं:
-प्रबंधन प्रबंधन, उन्हें उपयोगी महसूस कराते हैं (हमने कुछ किया है, हमने सॉफ़्टवेयर को ठीक करने के लिए बहुत पैसा खर्च किया है)। यह उन कार्यों को देता है जो उनके पावरपॉइंट रिपोर्टिंग में पूरा करना आसान है)।
'जहरीले' डेवलपर्स व्यस्त रखें। उन्हें उपकरण को कॉन्फ़िगर करने दें और उपकरण परिणामों का विश्लेषण करें, ताकि आपके पास उनके खराब कीड़े को ठीक करने का समय हो सके।
-नहीं कोडिंग नियम। उस स्थिति में इसका उपयोग पहले दिन से ही किया जाना चाहिए। लेकिन एक अच्छा कोड समीक्षा उपकरण बेहतर विकल्प हो सकता है।

इसलिए मेरी राय है कि 'विषाक्त' लोगों को व्यस्त रखने के लिए आप इस तरह के महंगे, समय लेने वाले औजारों से बचें।


1

मैं एक कंपनी में काम कर रहा हूं जो जोएल टेस्ट में 11 स्कोर करेगी - कम से कम कागज पर।

जोएल टेस्ट द्वारा मान्यता अच्छी प्रथाओं का माप नहीं है; जोएल टेस्ट द्वारा अमान्य हालांकि, खराब / लापता प्रथाओं का एक उपाय है। दूसरे शब्दों में, इसे आवश्यक के रूप में देखा जा सकता है, लेकिन पर्याप्त नहीं।

अब, मेरे अधिकांश साथी खुश हैं यदि वे रविवार शाम 6 बजे घर वापस जा सकते हैं।

ऐसा लगता है कि आपको प्रबंधन की समस्या है। व्यवस्थित ओवरटाइम चीजों को प्राप्त करने का एक समाधान नहीं है; अगर कुछ भी है, तो यह उन चीजों को बनाने का एक समाधान है जैसे वे काम कर रहे हैं और तकनीकी ऋण जमा कर रहे हैं।

अब, मुझे नहीं लगता कि वास्तव में इस कंपनी को बचाया जा सकता है। हालांकि, मैं जानना चाहता हूं कि क्या कोई बेहतर, अधिमानतः काम करने का तरीका है, "प्रो" टूल का उपयोग करने का तरीका या अगर मुझे भविष्य में निर्णय लेने वाला है तो मुझे पूरी तरह से उपयोग करने से बचना चाहिए।

हां, एक स्थिर तरीके से स्थिर कोड विश्लेषण का उपयोग करने का एक तरीका है।

वे कर सकते हैं, और आमतौर पर बहुत अधिक मूल्य प्रदान करते हैं। आपको बस यह याद रखना है कि, (संकलक चेतावनी की तरह) एक स्थैतिक विश्लेषण उपकरण (सबसे अधिक) कुछ गलत होने के संकेत प्रदान कर सकता है - बग रिपोर्ट नहीं, और कोई निश्चितता नहीं।

ऐसा लगता है कि आपके निर्णय निर्माता आवेदन के दोषों के साथ स्थिर विश्लेषण झंडे को भ्रमित करते हैं।

उनकी शैली की किताबों पर नकली कलाकारों को भी ब्लैकलिस्ट किया गया है।

यह एक प्रबंधन क्षमता समस्या की तरह लगता है, न कि एक स्थिर विश्लेषण समस्या।

परिणाम है:

लोग हर रिवायत में टाइप कास्ट जोड़ते हैं और हर तर्क को प्रक्रिया में वास्तविक समस्याग्रस्त प्रकार बेमेल छिपाते हैं।

लोग एक कीड़े से परिचय कराते हैं, या एक अलग समस्याग्रस्त भाषा सुविधा का उपयोग करते हैं।

चेतावनियों को चुप करा दिया जाता है।

बग रिपोर्ट में रोलिंग शुरू होती है।

ये सभी आवधिक रिपोर्ट को अच्छा बनाने के तरीके हैं, कोड में समस्याओं को ठीक करने के तरीके नहीं हैं (ऐसा लगता है कि आपके पास प्रबंधन क्षमता समस्या है, फिर से)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.