એકમ 4 / 12

કોડ સમીક્ષા અને ભૂલ શોધવી

નફો:

  • શ્રેણીઓ અને ગંભીરતા ટૅગ્સ સાથે પ્રારંભિક સમીક્ષા ફિલ્ટર તરીકે AI નો ઉપયોગ કરવાની ક્ષમતા
  • ચકાસવા/ખોટી હકારાત્મક/લાગુ કરવા માટે માનવ મન સાથે તારણો ફિલ્ટર કરવાની ક્ષમતા
  • વ્યવસાય નિયમ, આર્કિટેક્ચર અને સુરક્ષા-નિર્ણાયક નિર્ણયો પર માનવ મંજૂરીની આવશ્યકતાઓને લાગુ કરવાની ક્ષમતા

કોડ રિવ્યૂ એ છે જ્યારે ડેવલપર દ્વારા લખાયેલ ફેરફારને મર્જ કરવામાં આવે તે પહેલાં કોઈ અન્ય દ્વારા તેની સમીક્ષા કરવામાં આવે છે. સારી સમીક્ષા; તે બગ્સને વહેલા પકડે છે, માહિતી શેર કરે છે અને કોડ બેઝને સુસંગત રાખે છે. પરંતુ સમીક્ષાઓ કંટાળાજનક હોય છે, વિચલિત થવાની સંભાવના હોય છે અને સમયના દબાણ હેઠળ સુપરફિસિયલ બની જાય છે. આર્ટિફિશિયલ ઇન્ટેલિજન્સ એ અહીં બે-ગણો સહાયક છે: તે તમને તમારા પોતાના કોડને પૂર્વ-સાફ કરવાની મંજૂરી આપે છે જે તમે સમીક્ષા માટે સબમિટ કરો છો અને અન્ય કોઈના PR (પુલ વિનંતી) ને તીક્ષ્ણ આંખથી તપાસી શકો છો.

નિર્ણાયક તફાવત આ છે: AI સમીક્ષાને ગતિ આપે છે અને વધારે છે, પરંતુ તે મંજૂરીની જવાબદારી લઈ શકતું નથી. વાક્ય "AI જોયું, તે સ્વચ્છ છે" એ સમર્થન નથી. આખરી "મર્જ"નો નિર્ણય કોડ અને સંદર્ભ જાણતા એન્જિનિયર પર છે.

સમીક્ષામાં AI શું સારું અને ખરાબ શું છે

આના માટે સારું: નલ ચેક મિસ, રિસોર્સ લીક્સ (ફાઇલ/લિંક ખુલ્લી રહે છે), અજાણ્યા અપવાદો, દેખીતી રીતે ખોટી શરતો (>= બદલે >), નામ બદલવાના સૂચનો, વાંચનીયતા, ખૂટે છે એજ કેસ, સરળ સુરક્ષા ગંધ (જેમ કે SQL સ્ટ્રિંગ જોડાણ), ડુપ્લિકેટ કોડ શોધ.

નબળાઈઓ: ઊંડી ખામીઓ કે જે તમારા વ્યવસાયના નિયમનું ઉલ્લંઘન કરે છે પરંતુ સંદર્ભ અને સમયની જરૂર હોય છે, જેમ કે સિન્ટેક્ટીલી સાચો તર્ક, આર્કિટેક્ચરલ અનુપાલન, વાસ્તવિક કામગીરીની અડચણો, સહવર્તી ભૂલો. AI ખોટા સકારાત્મક (કંઈકને ભૂલવું જે વાસ્તવમાં સમસ્યા માટે સમસ્યા નથી) અને ખોટા નકારાત્મક (વાસ્તવિક બગ ખૂટે છે) પણ ઉત્પન્ન કરે છે. તેથી, તેનું આઉટપુટ "સાવધાનીની સૂચિ" છે, ચોક્કસ ચુકાદો નથી.

સાવધાન: માત્ર કારણ કે AI કહે છે કે "કોઈ સમસ્યા નથી" કોડ સાચો છે તે સાબિત કરતું નથી. ખોટા નકારાત્મક શાંત છે; સૌથી ખતરનાક ભૂલો તે છે જેનો સમીક્ષામાં ક્યારેય ઉલ્લેખ કરવામાં આવ્યો નથી.

વ્યવસ્થિત સમીક્ષા પગલાં

  1. સંદર્ભ આપો. ફેરફારનો હેતુ, સંબંધિત મુદ્દો અને સ્વીકૃતિ માપદંડ, જો કોઈ હોય તો, પ્રોમ્પ્ટમાં ઉમેરો. હેતુહીન સમીક્ષા હેતુહીન અર્થઘટન પેદા કરે છે.
  2. તેને શ્રેણીઓમાં વિભાજીત કરો. મોડેલને તારણોને "બગ/સુરક્ષા/પ્રદર્શન/વાંચનક્ષમતા/શૈલી" તરીકે વર્ગીકૃત કરવા કહો; તેથી તમે ઘોંઘાટથી જટિલને અલગ કરો છો.
  3. ગંભીરતા લેબલની વિનંતી કરો. દરેક શોધને "ઉચ્ચ/મધ્યમ/નીચી" રેટિંગ આપો અને તેમાં "કારણ" અને "સુચન કરેલ સુધારણા" શામેલ કરો.
  4. તેને તમારી પોતાની આંખોથી ફિલ્ટર કરો. દરેક શોધનું મૂલ્યાંકન કરો: શું તે વાસ્તવિક છે (ચકાસો), શું તે ખોટા હકારાત્મક છે (વાજબીતા લખો), શું કંઈ ખૂટે છે (તમારું પોતાનું જ્ઞાન ઉમેરો).
  5. જટિલ પાથ જાતે ચકાસો. AI પર આધાર રાખ્યા વિના જાતે પૈસા, ઓળખ, અધિકૃતતા અને ડેટા કાઢી નાખવાના માર્ગો વાંચો અને ચલાવો.

ત્રણ મિની કેસ

કેસ 1 — સાયલન્ટ નલ ભૂલ પકડાઈ. એક ટીમે 380-લાઇન PRની AI પૂર્વ-સમીક્ષા કરી હતી. મોડેલે એવી રીતે ફ્લેગ કર્યું કે જેમાં બાહ્ય સેવા પ્રતિસાદ શૂન્ય હોઈ શકે, પરંતુ કોડમાં આ માટે કોઈ તપાસ કરવામાં આવી ન હતી. માનવ સમીક્ષકે આ પાથની ચકાસણી કરી અને નલ ચેક ઉમેર્યો; આવી જ ભૂલને કારણે પાછલા ક્વાર્ટરમાં ઉત્પાદનમાં 2-કલાકનો વિક્ષેપ પડ્યો હતો.

કેસ 2 - ખોટા હકારાત્મક નાબૂદી. AI એ લૂપમાં "સંભવિત પ્રદર્શન સમસ્યા" ચિહ્નિત કરી. સમીક્ષકે આને ખોટા હકારાત્મક તરીકે બંધ કરી દીધું, એ જાણીને કે લૂપ માત્ર મહત્તમ 5 તત્વો સાથે કામ કરે છે (તે enum પર લૂપ કરે છે). મોડેલ, જે સંદર્ભ જાણતા ન હતા, ચેતવણી આપી; જે વ્યક્તિ સંદર્ભ જાણતી હતી તેણે યોગ્ય નિર્ણય લીધો.

કેસ 3 - AI બિઝનેસ નિયમ ભૂલ ચૂકી ગયો. જ્યારે ઝુંબેશના નિયમ મુજબ ડિસ્કાઉન્ટ એકાઉન્ટ મહત્તમ 30% હોવું જોઈએ, કોડે 50% ની મંજૂરી આપી છે. AI એ ક્યારેય આ સિન્ટેક્ટીકલી પરફેક્ટ લોજિકલ એરરને ધ્યાનમાં લીધું નથી; કારણ કે તે નિયમ જાણતો ન હતો. સ્વીકૃતિ માપદંડ જાણતા ઉત્પાદન માલિક દ્વારા સમીક્ષામાં બગ પકડાયો હતો. પાઠ: વ્યવસાયના નિયમની માન્યતા એ માનવીય કાર્ય છે.

ચાર નકલ કરી શકાય તેવા નમૂનાઓ

હેતુલક્ષી, વર્ગીકૃત સમીક્ષા:

ભૂમિકા: ઝીણવટભરી કોડ સમીક્ષક. ફેરફારનો હેતુ: {{purpose / issue}}આ તફાવતની સમીક્ષા કરો. આ કેટેગરીમાં તારણો પ્રદાન કરો: [બગ] [સુરક્ષા] [પ્રદર્શન] [વાંચવાની ક્ષમતા] [શૈલી]. દરેક શોધ માટે: ફાઇલ:પંક્તિ, ગંભીરતા(ઉચ્ચ/મધ્યમ/નીચી), કારણ, ભલામણ કરેલ ફિક્સ. જો તમને ખાતરી ન હોય તો "શક્ય" તરીકે ચિહ્નિત કરો. તમે વ્યવસાયના નિયમો જાણતા નથી; નિયમોની જરૂર હોય તેવા સ્થાનો વિશે મને પૂછો.{{diff}}

તમારા પોતાના કોડની સમીક્ષા કરવાની તૈયારી કરવા માટે:

PR ખોલતા પહેલા આ ફેરફારની સમીક્ષા કરો. આ માટે જુઓ: ગુમ થયેલ નલ/બગચેક, રિસોર્સ લીક, એજ કેસ, સિક્રેટ, ચકાસાયેલ શાખા. અગ્રતાના ક્રમમાં તારણોની યાદી બનાવો; દરેક માટે 1 લીટી સુધારણા સૂચવો.{{code}}

એજ કેસ હન્ટ:

ઇનપુટ્સ અને પરિસ્થિતિઓની સૂચિ બનાવો જ્યાં આ કાર્ય તૂટી શકે છે: ખાલી, શૂન્ય, ખૂબ મોટું, નકારાત્મક, સહવર્તી કૉલ, નેટવર્ક ભૂલ, આંશિક ડેટા. દરેક કેસ માટે, અપેક્ષિત વર્તન અને વર્તમાન કોડ શું કરશે તે લખો.{{function}}

સુરક્ષા સુગંધ સ્કેનિંગ (પ્રી-સ્ક્રીનિંગ):

આ કોડમાં સામાન્ય સુરક્ષા ગંધ માટે જુઓ: SQL/કમાન્ડ જોડાણ, અમાન્ય ઇનપુટ, અપરિવર્તનશીલ એમ્બેડેડ સિક્રેટ, અસુરક્ષિત ડિસિરિયલાઈઝ, વિશેષાધિકાર ચકાસણીનો અભાવ. તારણોને "ચોક્કસ/સંભવિત/જ્ઞાન" માં અલગ કરો. આ પ્રારંભિક તપાસ છે; તે કોઈ ચોક્કસ ચુકાદો નથી.{{code}}

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

નબળા: "શું આ પીઆરમાં કોઈ ભૂલ છે?"
સશક્ત: "ઉદ્દેશ: કાર્ટના કુલમાં કૂપન ડિસ્કાઉન્ટ ઉમેરો (ડિસ્કાઉન્ટ 30% કરતા વધુ ન હોવું જોઈએ — તમે આ નિયમ જાતે ચકાસી શકતા નથી, માત્ર મને જણાવો કે શું કોડ ઉપલી મર્યાદા લાદે છે). તફાવતનું પરીક્ષણ કરો; શ્રેણી + ગંભીરતા + સૂચવેલ કરેક્શન દ્વારા તારણો આપો, જો અચોક્કસ હોય તો 'શક્ય' તરીકે ચિહ્નિત કરો. [diff]"

મજબૂત સંસ્કરણ સ્પષ્ટપણે AI ના ઉદ્દેશ્ય, વ્યવસાય નિયમ અને સીમા જણાવે છે; આમ, ઉપયોગી તારણો આવે છે અને મોડેલ માટે અજાણ્યો વિસ્તાર સ્પષ્ટ રહે છે.

પ્રકાર શોધવી

AI વિશ્વસનીયતા

માણસની ભૂમિકા

નલ/ભૂલ ચેક ખૂટે છે

ઉચ્ચ

ચકાસો અને અરજી કરો

વાંચનક્ષમતા/શૈલી

ઉચ્ચ

પસંદગી દ્વારા પસંદ કરો

સરળ સુરક્ષા ગંધ

મધ્યમ

ફાઇનલ કરો, વાહન સાથે સ્કેન કરો

વ્યવસાયના નિયમોનું પાલન

નીચું

તે સંપૂર્ણપણે માનવ છે.

સુસંગતતા/આર્કિટેક્ચર

નીચું

નિષ્ણાત સમીક્ષા જરૂરી છે

AI સમીક્ષા માનવ સમીક્ષા માટે રિપ્લેસમેન્ટ નથી

AI સમીક્ષાને "પ્રથમ ફિલ્ટર" તરીકે સ્થાન આપો: એક સસ્તો, ઝડપી, અથાક પ્રારંભિક પાસ. આ ફિલ્ટર માનવ સમીક્ષકનું ધ્યાન બિનમહત્વની વિગતો (એક જગ્યા, એક નામ) થી મુક્ત કરે છે અને તેને એવા સ્થાનો તરફ નિર્દેશિત કરે છે કે જેને ખરેખર વિચારની જરૂર હોય - વ્યવસાય નિયમ, આર્કિટેક્ચર, સુરક્ષા પરિણામ. પરંતુ મર્જની મંજૂરી એ ટીમની અંદર જવાબદાર વ્યક્તિની સહી છે. સલામતી-નિર્ણાયક ફેરફારો માટે ઓછામાં ઓછા એક સક્ષમ એન્જિનિયર દ્વારા સ્વતંત્ર સમીક્ષા ફરજિયાત છે.

ટિપ: AI જે "કરવા માટે" ને બદલે "ચકાસવા માટેની વસ્તુઓ" તરીકે ઉત્પન્ન કરે છે તે તારણોની સૂચિ વાંચો. કાં તો દરેક આઇટમને ચકાસો અને લાગુ કરો અથવા એક વાક્યમાં લખો કે તમે તેને કેમ પસાર કર્યો; આ ટ્રેસ સમીક્ષાને ઓડિટેબલ બનાવે છે.

સામાન્ય ભૂલો

  • તેનો અર્થ થાય છે "એઆઈ દેખાઈ, તે સ્વચ્છ છે". ખોટા નકારાત્મકને કારણે આ આત્મવિશ્વાસની ખોટી ભાવના છે.
  • સંદર્ભ આપતો નથી. હેતુ અને સ્વીકૃતિના માપદંડ વિના, મોડેલ ફક્ત ઉપરછલ્લા શૈલીના અર્થઘટન ઉત્પન્ન કરે છે.
  • ખોટા હકારાત્મકને આંધળાપણે લાગુ કરવું. મોડેલની દરેક ચેતવણીને ઠીક કરવાથી ચાલી રહેલ કોડ તૂટી શકે છે.
  • મોડેલને વ્યવસાયના નિયમ વિશે પૂછવું. મોડેલને નિયમ ખબર નથી; તેને ચકાસવાનું માણસ પર છે.
  • હિંસા સામે ભેદભાવ ન કરો. સમાન બેગમાં નિર્ણાયક સુરક્ષા શોધ અને નામનું સૂચન મૂકવું એ મહત્ત્વની બાબતને ઢાંકી દે છે.

સારાંશમાં

AI એ કોડ રિવ્યુમાં અથાક પ્રથમ ફિલ્ટર છે: તે નલ/ત્રુટી ચૂકી જાય છે, એજ કેસ, અને સરળ સુરક્ષા સારી રીતે ગંધે છે; પરંતુ તે વ્યાપાર નિયમ, આર્કિટેક્ચર અને સમન્વય જેવા સંદર્ભ-જરૂરી ખામીઓ પર નબળું છે અને ખોટા હકારાત્મક અને ખોટા નકારાત્મક બંને પેદા કરે છે. શ્રેણી અને ગંભીરતા દ્વારા તારણોની વિનંતી કરો, માનવીય બુદ્ધિમત્તા સાથે દરેકને ફિલ્ટર કરો, નિર્ણાયક માર્ગો જાતે ચકાસો. મંજૂરી હંમેશા જવાબદાર એન્જિનિયરની સહી હોય છે.

એપ્લિકેશન કાર્ય

વાસ્તવિક અથવા તાજેતરના PR/ડિફ પસંદ કરો. સૌપ્રથમ, AI પાસે "ઉદ્દેશ-લક્ષી, શ્રેણી સમીક્ષા" નમૂના સાથે તેની સમીક્ષા કરો. તારણોને કોષ્ટકમાં મૂકો અને દરેક માટે નક્કી કરો: સાચું (મેં ચકાસ્યું), ખોટા હકારાત્મક (અહીં મારો તર્ક છે), અથવા અમલમાં મૂકવો. પછી જાતે પ્રવાસ કરો અને ઓછામાં ઓછી એક વસ્તુ (ખાસ કરીને વ્યવસાય નિયમ અથવા ધાર કેસ) શોધવાનો પ્રયાસ કરો કે જે AI ખૂટે છે અને તેને લખો.

ચેકલિસ્ટ

  • [ ] હું AI સમીક્ષાનો ઉપયોગ પ્રથમ ફિલ્ટર તરીકે કરું છું, સમર્થન નહીં.
  • [ ] હું સમીક્ષા પ્રોમ્પ્ટમાં હેતુ અને સ્વીકૃતિ માપદંડ ઉમેરું છું.
  • [ ] હું તારણોને કેટેગરી દ્વારા અવાજથી અલગ કરું છું અને તેમને ખૂબ જ ઈચ્છું છું.
  • [ ] હું સભાનપણે દરેક શોધને પુષ્ટિ/ખોટી હકારાત્મક/લાગુ કરવા માટે ફિલ્ટર કરું છું.
  • [ ] એક માનવ તરીકે, હું વ્યવસાયના નિયમો અને સ્થાપત્ય અનુપાલન તપાસું છું.
  • [ ] મને સલામતી-નિર્ણાયક ફેરફારો માટે લાયકાત ધરાવતા એન્જિનિયરની મંજૂરીની જરૂર છે.