इकाई 4 / 12

कोड समीक्षा और त्रुटि ढूँढना

लाभ:

  • श्रेणियों और गंभीरता टैग के साथ प्रारंभिक समीक्षा फ़िल्टर के रूप में एआई का उपयोग करने की क्षमता
  • सत्यापित/गलत सकारात्मक/लागू करने के लिए मानव मस्तिष्क से निष्कर्षों को फ़िल्टर करने की क्षमता
  • व्यावसायिक नियम, वास्तुकला और सुरक्षा-महत्वपूर्ण निर्णयों पर मानव अनुमोदन आवश्यकताओं को लागू करने की क्षमता

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

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

समीक्षा में एआई क्या अच्छा और बुरा है

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

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

सावधानी: सिर्फ इसलिए कि AI कहता है "कोई समस्या नहीं" यह साबित नहीं करता कि कोड सही है। झूठी नकारात्मक बातें चुप हैं; सबसे खतरनाक गलतियाँ वे हैं जिनका समीक्षा में कभी उल्लेख नहीं किया गया है।

व्यवस्थित समीक्षा चरण

  1. सन्दर्भ दीजिये. परिवर्तन का उद्देश्य, प्रासंगिक मुद्दा और स्वीकृति मानदंड, यदि कोई हो, को संकेत में जोड़ें। उद्देश्यहीन समीक्षा उद्देश्यहीन व्याख्या उत्पन्न करती है।
  2. इसे श्रेणियों में तोड़ें। मॉडल से निष्कर्षों को "बग/सुरक्षा/प्रदर्शन/पठनीयता/शैली" के रूप में वर्गीकृत करने के लिए कहें; इसलिए आप आलोचनात्मक को शोर से अलग करते हैं।
  3. गंभीरता लेबल का अनुरोध करें. प्रत्येक निष्कर्ष को "उच्च/मध्यम/निम्न" रेटिंग दें और "कारण" और "अनुशंसित सुधार" शामिल करें।
  4. इसे अपनी आंखों से छान लें. प्रत्येक निष्कर्ष का मूल्यांकन करें: क्या यह वास्तविक है (सत्यापित करें), क्या यह गलत सकारात्मक है (औचित्य लिखें), क्या इसमें कुछ कमी है (अपना ज्ञान जोड़ें)।
  5. महत्वपूर्ण पथों को मैन्युअल रूप से सत्यापित करें. एआई पर भरोसा किए बिना धन, पहचान, प्राधिकरण और डेटा हटाने से जुड़े मार्गों को स्वयं पढ़ें और निष्पादित करें।

तीन मिनी मामले

केस 1 - साइलेंट नल त्रुटि पकड़ी गई। एक टीम के पास 380-लाइन पीआर की एआई पूर्व-समीक्षा थी। मॉडल ने एक ऐसे तरीके को चिह्नित किया जिसमें बाहरी सेवा प्रतिक्रिया शून्य हो सकती है, लेकिन कोड में इसके लिए कोई जांच नहीं की गई थी। मानव समीक्षक ने इस पथ को सत्यापित किया और एक शून्य जाँच जोड़ी; पिछली तिमाही में इसी तरह की त्रुटि के कारण उत्पादन में 2 घंटे की रुकावट आई थी।

केस 2 - गलत सकारात्मक उन्मूलन। एआई ने एक लूप में "संभावित प्रदर्शन समस्या" को चिह्नित किया। समीक्षक ने इसे गलत सकारात्मक के रूप में बंद कर दिया, यह जानते हुए कि लूप केवल अधिकतम 5 तत्वों के साथ काम करता है (यह एक एनम पर लूप करता है)। मॉडल, जो संदर्भ नहीं जानती थी, ने चेतावनी दी; जो व्यक्ति संदर्भ जानता था उसने सही निर्णय लिया।

केस 3 - एआई मिस्ड बिजनेस रूल एरर। जबकि अभियान नियम के अनुसार डिस्काउंट खाता अधिकतम 30% होना चाहिए, कोड में 50% की अनुमति है। एआई ने इस वाक्यात्मक रूप से परिपूर्ण तार्किक त्रुटि पर कभी ध्यान नहीं दिया; क्योंकि उसे नियम मालूम नहीं था. उत्पाद स्वामी की समीक्षा में बग पकड़ा गया जो स्वीकृति मानदंड जानता था। पाठ: व्यवसाय नियम सत्यापन एक मानवीय कार्य है।

चार प्रतिलिपि योग्य टेम्पलेट

उद्देश्य-उन्मुख, वर्गीकृत समीक्षा:

भूमिका: सूक्ष्म कोड समीक्षक। परिवर्तन का उद्देश्य: {{उद्देश्य/मुद्दा}}इस अंतर की समीक्षा करें। इन श्रेणियों में निष्कर्ष प्रदान करें: [बग] [सुरक्षा] [प्रदर्शन] [पठनीयता] [शैली]। प्रत्येक खोज के लिए: फ़ाइल: पंक्ति, गंभीरता (उच्च/मध्यम/निम्न), कारण, अनुशंसित समाधान। यदि आप निश्चित नहीं हैं तो "संभव" चिह्नित करें। आप व्यवसाय के नियम नहीं जानते; मुझसे उन स्थानों के बारे में पूछें जिनके लिए नियमों की आवश्यकता है।{{diff}}

अपने स्वयं के कोड की समीक्षा करने की तैयारी के लिए:

पीआर खोलने से पहले इस बदलाव की समीक्षा करें। खोजें: अनुपलब्ध नल/बगचेक, संसाधन लीक, एज केस, गुप्त, अप्रयुक्त शाखा। निष्कर्षों को प्राथमिकता के क्रम में सूचीबद्ध करें; प्रत्येक के लिए 1 पंक्ति सुधार का सुझाव दें। {{कोड}}

एज केस हंट:

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

सुरक्षा गंध स्कैनिंग (पूर्व-स्क्रीनिंग):

इस कोड में सामान्य सुरक्षा गंधों को देखें: SQL/कमांड कॉन्सटेनेशन, अमान्य इनपुट, अपरिवर्तनीय एम्बेडेड रहस्य, असुरक्षित डिसेरिएलाइज़, विशेषाधिकार जाँच की कमी। निष्कर्षों को "निश्चित/संभावित/ज्ञान" में अलग करें। यह एक प्रारंभिक स्क्रीनिंग है; यह कोई निश्चित निर्णय नहीं है.{{कोड}}

कमजोर संकेत/मजबूत संकेत

कमज़ोर: "क्या इस पीआर में कोई गलती है?"
मजबूत: "उद्देश्य: कुल कार्ट में कूपन छूट जोड़ें (छूट 30% से अधिक नहीं होनी चाहिए - आप इस नियम को स्वयं सत्यापित नहीं कर सकते हैं, बस मुझे बताएं कि क्या कोड ऊपरी सीमा लगाता है)। अंतर की जांच करें; श्रेणी + गंभीरता + सुझाए गए सुधार के आधार पर निष्कर्ष दें, अनिश्चित होने पर 'संभव' चिह्नित करें। [अंतर]"

मजबूत संस्करण एआई के इरादे, व्यावसायिक नियम और सीमा को स्पष्ट रूप से बताता है; इस प्रकार, उपयोगी निष्कर्ष आते हैं और मॉडल के लिए अज्ञात क्षेत्र स्पष्ट रहता है।

प्रकार ढूँढना

एआई विश्वसनीयता

आदमी की भूमिका

शून्य/त्रुटि जाँच गायब है

उच्च

सत्यापित करें और आवेदन करें

पठनीयता/शैली

उच्च

प्राथमिकता के आधार पर चुनें

सरल सुरक्षा गंध

मध्यम

अंतिम रूप दें, वाहन से स्कैन करें

व्यवसाय नियम का अनुपालन

कम

यह पूरी तरह से मानवीय है.

समवर्ती/वास्तुकला

कम

विशेषज्ञ समीक्षा आवश्यक है

एआई समीक्षा मानव समीक्षा का प्रतिस्थापन नहीं है

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

युक्ति: उन निष्कर्षों की सूची पढ़ें जिन्हें एआई "करने योग्य चीजों" के बजाय "जांचने योग्य चीजों" के रूप में प्रस्तुत करता है। या तो प्रत्येक आइटम को सत्यापित करें और लागू करें या एक वाक्य में लिखें कि आपने इसे क्यों पास किया; यह ट्रेस समीक्षा को श्रवण योग्य बनाता है।

सामान्य गलतियाँ

  • इसका मतलब है "एआई ने देखा, यह साफ है"। झूठी नकारात्मकताओं के कारण यह आत्मविश्वास की झूठी भावना है।
  • सन्दर्भ नहीं दे रहा. उद्देश्य और स्वीकृति मानदंड के बिना, मॉडल केवल सतही शैली व्याख्याएं उत्पन्न करता है।
  • आँख मूँद कर झूठी सकारात्मक बातें लागू करना। मॉडल की प्रत्येक चेतावनी को ठीक करने से रनिंग कोड टूट सकता है।
  • मॉडल से व्यवसाय नियम के बारे में पूछना। मॉडल को नियम नहीं पता; इसे सत्यापित करना मनुष्य पर निर्भर है।
  • हिंसा में भेदभाव न करें. एक महत्वपूर्ण सुरक्षा खोज और एक नाम का सुझाव एक ही बैग में रखने से जो महत्वपूर्ण है वह खत्म हो जाता है।

संक्षेप में

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

आवेदन कार्य

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

चेकलिस्ट

  • [ ] मैं एआई समीक्षा का उपयोग पहले फ़िल्टर के रूप में करता हूं, समर्थन के रूप में नहीं।
  • [ ] मैं समीक्षा संकेत में उद्देश्य और स्वीकृति मानदंड जोड़ता हूं।
  • [ ] मैं निष्कर्षों को श्रेणी के आधार पर शोर से अलग करता हूं और उन्हें दृढ़ता से चाहता हूं।
  • [ ] मैं प्रत्येक निष्कर्ष को पुष्टि/गलत सकारात्मक/लागू करने के लिए सचेत रूप से फ़िल्टर करता हूं।
  • [ ] एक इंसान के रूप में, मैं व्यवसाय नियम और वास्तु अनुपालन की जांच करता हूं।
  • [ ] मुझे सुरक्षा-महत्वपूर्ण परिवर्तनों के लिए एक योग्य इंजीनियर से अनुमोदन की आवश्यकता है।