ስህተቶችን ለማግኘት ከመጠቀም ይልቅ በሂደቱ ውስጥ የማይለዋወጥ ትንታኔን ይተግብሩ

ይህንን ጽሑፍ እንድጽፍ ያነሳሳኝ በስታቲስቲክስ ትንተና ላይ ያሉ ብዙ ቁሳቁሶች ወደ ትኩረቴ እየመጡ ነው። በመጀመሪያ, ይህ PVS-ስቱዲዮ ብሎግበክፍት ምንጭ ፕሮጀክቶች ውስጥ በመሳሪያቸው በተገኙ ስህተቶች ግምገማዎች በመታገዝ እራሱን በሀበሬ ላይ በንቃት ያስተዋውቃል። በቅርቡ PVS-ስቱዲዮ ተተግብሯል። የጃቫ ድጋፍ, እና በእርግጥ የ IntelliJ IDEA ገንቢዎች ፣ አብሮገነብ ተንታኝ ምናልባት ዛሬ ለጃቫ በጣም የላቀ ነው። መራቅ አልቻለም.

እንደነዚህ ያሉ ግምገማዎችን በሚያነቡበት ጊዜ ስለ አስማት ኤሊሲር እየተነጋገርን እንደሆነ ይሰማዎታል-አዝራሩን ይጫኑ, እና እዚህ አለ - ከዓይኖችዎ በፊት ጉድለቶች ዝርዝር. ተንታኞች እየተሻሻሉ ሲሄዱ ብዙ እና ብዙ ሳንካዎች በራስ-ሰር እንደሚገኙ እና በእነዚህ ሮቦቶች የተቃኙ ምርቶች የተሻሉ እና የተሻሉ እየሆኑ ይሄዳሉ፣ በእኛ በኩል ምንም ጥረት ሳናደርግ ይመስላል።

ነገር ግን ምንም አስማት elixirs የለም. እንደ “የእኛ ሮቦታችን ሊያገኛቸው የሚችላቸው ነገሮች እዚህ አሉ” በሚለው ጽሁፎች ላይ ስለማይነገርው ነገር ማውራት እፈልጋለሁ፡ ተንታኞች ምን ማድረግ እንደማይችሉ፣ በሶፍትዌር አቅርቦት ሂደት ውስጥ እውነተኛ ሚናቸው እና ቦታቸው ምንድን ነው እና እንዴት በትክክል መተግበር እንደሚቻል። .

ስህተቶችን ለማግኘት ከመጠቀም ይልቅ በሂደቱ ውስጥ የማይለዋወጥ ትንታኔን ይተግብሩ
ራትቼ (ምንጭ፡- wikipedia).

የማይንቀሳቀሱ ተንታኞች ምን ማድረግ አይችሉም

ከተግባራዊ እይታ አንጻር የምንጭ ኮድ ትንተና ምንድነው? አንዳንድ የምንጭ ኮድ እንደ ግብአት እናቀርባለን እና እንደ ውፅዓት፣ በአጭር ጊዜ ውስጥ (ከማሄድ ሙከራዎች በጣም ባነሰ) ስለ ስርዓታችን የተወሰነ መረጃ እናገኛለን። መሰረታዊ እና በሂሳብ የማይታለፍ ውሱንነት በዚህ መንገድ ትክክለኛ ጠባብ የመረጃ ክፍል ብቻ ማግኘት መቻል ነው።

የማይንቀሳቀስ ትንታኔን በመጠቀም ሊፈታ የማይችል የችግር በጣም ታዋቂው ምሳሌ ነው። የመዝጋት ችግር: ይህ የፕሮግራሙ ምንጭ ኮድ በአጭር ጊዜ ውስጥ መዞር ወይም መቋረጥን የሚወስን አጠቃላይ ስልተ-ቀመር ማዘጋጀት የማይቻል መሆኑን የሚያረጋግጥ ጽንሰ-ሀሳብ ነው። የዚህ ጽንሰ-ሐሳብ ማራዘሚያ ነው የሩዝ ቲዎሪ, ለማንኛውም ቀላል ያልሆነ የኮምፒዩተር ተግባራት ንብረቶች የዘፈቀደ ፕሮግራም ከእንደዚህ ያለ ንብረት ጋር ያለውን ተግባር ይገመግማል የሚለውን መወሰን በአልጎሪዝም ሊታለፍ የማይችል ችግር ነው። ለምሳሌ፣ እየተተነተነ ያለው ፕሮግራም የኢንቲጀር ስኩዌርን በሉት፣ የሚሰላ ስልተ ቀመር መሆኑን ከየትኛውም ምንጭ ኮድ ሊወስን የሚችል ተንታኝ መጻፍ አይቻልም።

ስለዚህ የስታቲክ ተንታኞች ተግባራዊነት የማይታለፉ ገደቦች አሉት። የማይለዋወጥ ተንታኝ በሁሉም ጉዳዮች ላይ ለምሳሌ፣ ባዶ እሴትን በሚፈቅዱ ቋንቋዎች ውስጥ “ኑል ጠቋሚ ልዩ” መከሰቱን ወይም በሁሉም ሁኔታዎች የ" መከሰትን ለመወሰን በፍፁም አይችልም። ባህሪ አልተገኘም" በተለዋዋጭ በተተየቡ ቋንቋዎች። በጣም የላቀ የማይንቀሳቀስ ተንታኝ ሊያደርገው የሚችለው ልዩ ጉዳዮችን ማጉላት ነው፣ ቁጥራቸውም ከምንጭ ኮድዎ ጋር ሊሆኑ ከሚችሉ ችግሮች መካከል ፣ ያለ ማጋነን ፣ የውቅያኖስ ጠብታ ነው።

የማይንቀሳቀስ ትንተና ሳንካዎችን መፈለግ አይደለም።

ከላይ ከተጠቀሰው መደምደሚያ, መደምደሚያው እንደሚከተለው ነው-የስታቲስቲክ ትንተና በፕሮግራሙ ውስጥ ያሉትን ጉድለቶች ቁጥር ለመቀነስ አይደለም. ለማለት እወዳለሁ-በፕሮጄክትዎ ላይ ለመጀመሪያ ጊዜ ሲተገበር በኮዱ ውስጥ “አስደሳች” ቦታዎችን ያገኛል ፣ ግን ምናልባት ፣ የፕሮግራምዎን ጥራት የሚነኩ ጉድለቶችን አያገኝም።

በተንታኞች በራስ-ሰር የተገኙ ጉድለቶች ምሳሌዎች አስደናቂ ናቸው ፣ ግን እነዚህ ምሳሌዎች የተያዙት ትልቅ የኮድቤዝ ስብስብን በመቃኘት መሆኑን መዘንጋት የለብንም ። በተመሳሳይ መርህ ብዙ ቀላል የይለፍ ቃሎችን በብዙ መለያዎች ላይ የመሞከር እድል ያላቸው ሰርጎ ገቦች በመጨረሻ ቀላል የይለፍ ቃል ያላቸውን መለያዎች ያገኛሉ።

ይህ ማለት የማይንቀሳቀስ ትንታኔ ጥቅም ላይ መዋል የለበትም ማለት ነው? በጭራሽ! እና በትክክል በተመሳሳዩ ምክንያት እያንዳንዱን አዲስ የይለፍ ቃል መፈተሽ ጠቃሚ ነው በ "ቀላል" የይለፍ ቃላት ማቆሚያ ዝርዝር ውስጥ መካተቱን ያረጋግጡ።

የማይንቀሳቀስ ትንተና ሳንካዎችን ከመፈለግ በላይ ነው።

እንደ እውነቱ ከሆነ, በተግባራዊ ትንተና የተፈቱ ችግሮች በጣም ሰፊ ናቸው. ደግሞም ፣ በአጠቃላይ ፣ የማይንቀሳቀስ ትንተና ከመጀመሩ በፊት የተከናወኑ የምንጭ ኮዶች ማረጋገጫ ነው። ማድረግ የምትችላቸው አንዳንድ ነገሮች እነሆ፡-

  • በቃሉ ሰፊው ስሜት የኮድ ዘይቤን መፈተሽ። ይህ ሁለቱንም ቅርጸቶችን መፈተሽ፣ ባዶ/ተጨማሪ ቅንፍ መጠቀምን መፈለግን፣ እንደ የመስመሮች ብዛት/የአንድ ዘዴ ሳይክሎማቲክ ውስብስብነት እና የመሳሰሉትን መለኪያዎች ላይ ገደቦችን ማቀናበርን ያጠቃልላል - የኮዱን ተነባቢነት እና ተጠብቆ የሚከለክል ማንኛውንም ነገር። በጃቫ ውስጥ እንዲህ ዓይነቱ መሣሪያ Checkstyle ነው, በ Python - flake8. የዚህ ክፍል ፕሮግራሞች ብዙውን ጊዜ “ሊንተሮች” ይባላሉ።
  • ሊተነተን የሚችል ኮድ ብቻ አይደለም. እንደ JSON፣ YAML፣ XML፣ .properties ያሉ የመገልገያ ፋይሎች (እና አለባቸው!) ትክክለኛ መሆናቸውን በራስ-ሰር ማረጋገጥ ይችላሉ። ለነገሩ የJSON መዋቅር በሙከራ አፈጻጸም ወቅት ወይም በሂደት ላይ ካለበት ጊዜ ይልቅ በራስ ሰር የፑል ጥያቄ ማረጋገጫ መጀመሪያ ደረጃ ላይ በአንዳንድ ያልተጣመሩ ጥቅሶች ምክንያት የJSON መዋቅር መበላሸቱን ማወቅ ይሻላል? ተስማሚ መሳሪያዎች ይገኛሉ: ለምሳሌ. YAMLlint, JSONLint.
  • ማጠናቀር (ወይም ለተለዋዋጭ ፕሮግራሚንግ ቋንቋዎች መተንተን) እንዲሁ የማይንቀሳቀስ ትንተና ዓይነት ነው። በአጠቃላይ ኮምፕሌተሮች ከምንጩ ኮድ ጥራት ጋር የተያያዙ ችግሮችን የሚጠቁሙ ማስጠንቀቂያዎችን መስራት የሚችሉ እና ችላ ሊባሉ የማይገባቸው ናቸው።
  • አንዳንድ ጊዜ ማጠናቀር የሚተገበር ኮድ ከመሰብሰብ በላይ ነው። ለምሳሌ, በቅርጸቱ ውስጥ ሰነዶች ካሉዎት AsciiDoctorከዚያ ወደ ኤችቲኤምኤል/ፒዲኤፍ በሚቀየርበት ቅጽበት የአሲኢዶክተር ተቆጣጣሪ (Maven ተሰኪ) ማስጠንቀቂያ ሊሰጥ ይችላል፣ ለምሳሌ፣ ስለተበላሹ የውስጥ አገናኞች። እና ይህ የፑል ጥያቄን ከሰነድ ለውጦች ጋር ላለመቀበል ጥሩ ምክንያት ነው።
  • የፊደል ማረም እንዲሁ የማይንቀሳቀስ ትንተና ዓይነት ነው። መገልገያ አስፐል ሆሄያትን በሰነድ ብቻ ሳይሆን በፕሮግራም ምንጭ ኮዶች (አስተያየቶች እና በቃል) በተለያዩ የፕሮግራሚንግ ቋንቋዎች ማለትም C/C++፣ Java እና Python ን ጨምሮ ማየት ይችላል። በተጠቃሚ በይነገጽ ወይም በሰነድ ውስጥ የፊደል አጻጻፍ ስህተት እንዲሁ ጉድለት ነው!
  • የማዋቀር ሙከራዎች (ሾለ ምን እንደሆኑ - ይመልከቱ. ይሄ и ይሄ ሪፖርቶች) ፣ ምንም እንኳን በክፍል የሙከራ ጊዜ እንደ pytest ፣ ምንም እንኳን በሚገደሉበት ጊዜ የምንጭ ኮዶችን ስለማይፈጽሙ የማይለዋወጥ ትንተና ዓይነት ናቸው።

እንደሚመለከቱት ፣ በዚህ ዝርዝር ውስጥ ስህተቶችን መፈለግ በጣም ትንሹን ሚና ይጫወታል ፣ እና ሁሉም ነገር የሚገኘው ነፃ ክፍት ምንጭ መሳሪያዎችን በመጠቀም ነው።

በፕሮጀክትዎ ውስጥ ከእነዚህ አይነት የማይንቀሳቀስ ትንታኔዎች ውስጥ የትኛውን መጠቀም አለብዎት? እርግጥ ነው, የበለጠ የተሻለው! ዋናው ነገር በትክክል መተግበር ነው, ይህም የበለጠ ይብራራል.

የማስረከቢያ ቧንቧ እንደ ባለብዙ ደረጃ ማጣሪያ እና የማይንቀሳቀስ ትንታኔ እንደ መጀመሪያው ደረጃ

ለቀጣይ ውህደት ክላሲክ ዘይቤ ፍሰቱን የሚቀይርበት፣ ከምንጭ ኮድ ለውጥ እስከ ማድረስ ወደ ምርት የሚሄድበት የቧንቧ መስመር ነው። በዚህ የቧንቧ መስመር ውስጥ የደረጃዎች መደበኛ ቅደም ተከተል ይህንን ይመስላል

  1. የማይንቀሳቀስ ትንተና
  2. ማጠናቀር
  3. ክፍል ሙከራዎች
  4. የውህደት ሙከራዎች
  5. የዩአይ ሙከራዎች
  6. በእጅ ቼክ

በ Nth ደረጃ የቧንቧ መስመር ውድቅ የተደረጉ ለውጦች ወደ ደረጃ N+1 አይተላለፉም.

ለምን በትክክል በዚህ መንገድ እና በሌላ አይደለም? በቧንቧው የሙከራ ክፍል ውስጥ ሞካሪዎች የታወቀውን የሙከራ ፒራሚድ ይገነዘባሉ።

ስህተቶችን ለማግኘት ከመጠቀም ይልቅ በሂደቱ ውስጥ የማይለዋወጥ ትንታኔን ይተግብሩ
ፒራሚድ ሙከራ ምንጭ፡- ጽሑፍ ማርቲን ፎለር።

በዚህ ፒራሚድ ግርጌ ላይ ለመፃፍ የቀለለ፣ለመፈፀም ፈጣን የሆኑ እና የመውደቅ ዝንባሌ የሌላቸው ሙከራዎች አሉ። ስለዚህ, ብዙዎቹ ሊኖሩ ይገባል, ተጨማሪ ኮድን ይሸፍኑ እና መጀመሪያ መተግበር አለባቸው. በፒራሚዱ አናት ላይ ፣ ተቃራኒው እውነት ነው ፣ ስለሆነም የውህደት እና የ UI ሙከራዎች ወደ አስፈላጊው ዝቅተኛ መጠን መቀነስ አለባቸው። በዚህ ሰንሰለት ውስጥ ያለው ሰው በጣም ውድ, ዘገምተኛ እና አስተማማኝ ያልሆነ ሃብት ነው, ስለዚህ እሱ በመጨረሻው ላይ ነው እና ያለፉት ደረጃዎች ምንም አይነት ጉድለቶች ካላገኙ ብቻ ስራውን ያከናውናል. ሆኖም ግን, ተመሳሳይ መርሆች ከመፈተሽ ጋር ቀጥተኛ ግንኙነት በሌላቸው ክፍሎች ውስጥ የቧንቧ መስመር ለመገንባት ጥቅም ላይ ይውላሉ!

በባለ ብዙ ደረጃ የውሃ ማጣሪያ ዘዴ ውስጥ ተመሳሳይነት ማቅረብ እፈልጋለሁ. ቆሻሻ ውሃ (ከጉድለት ጋር የሚደረጉ ለውጦች) በመግቢያው ላይ ይቀርባሉ, በውጤቱ ላይ ንጹህ ውሃ መቀበል አለብን, በውስጡም ሁሉም ያልተፈለጉ ብክሎች ተወግደዋል.

ስህተቶችን ለማግኘት ከመጠቀም ይልቅ በሂደቱ ውስጥ የማይለዋወጥ ትንታኔን ይተግብሩ
ባለብዙ-ደረጃ ማጣሪያ. ምንጭ፡- የግልነት ድንጋጌ

እንደምታውቁት፣ የጽዳት ማጣሪያዎች የተነደፉት እያንዳንዱ ተከታይ ካስኬድ ከጊዜ ወደ ጊዜ የላቀ የብክለት ክፍልፋይ እንዲያጣራ ነው። በተመሳሳይ ጊዜ, ጥራጣ የመንጻት ፏፏቴዎች ከፍተኛ መጠን እና ዝቅተኛ ዋጋ አላቸው. በእኛ ንጽጽር ይህ ማለት የግብዓት ጥራት በሮች ፈጣን ናቸው, ለመጀመር አነስተኛ ጥረት የሚጠይቁ እና እራሳቸው በአሠራር ላይ የበለጠ ትርጉም የሌላቸው ናቸው - እና ይህ የተገነቡበት ቅደም ተከተል ነው. አሁን እንደ ተረዳነው የስታቲስቲክ ትንተና ሚና ከፍተኛ ጉድለቶችን ብቻ ማስወገድ የሚችል ነው, የ "ጭቃ" ፍርግርግ በማጣሪያው ፏፏቴ መጀመሪያ ላይ.

የማይለዋወጥ ትንተና በራሱ የመጨረሻውን ምርት ጥራት አያሻሽለውም, ልክ እንደ "የጭቃ ማጣሪያ" ውሃ አይጠጣም. እና ግን, ከሌሎች የቧንቧ መስመር አካላት ጋር በመተባበር አስፈላጊነቱ ግልጽ ነው. ምንም እንኳን በባለ ብዙ ስቴጅ ማጣሪያ የውጤት ደረጃዎች የግቤት ደረጃዎች የሚያደርጉትን ሁሉንም ነገር ለመያዝ የሚያስችል አቅም ቢኖራቸውም ፣ ያለግብዓት ደረጃዎች በጥሩ-ንፅህና ደረጃዎች ብቻ ለማድረግ ቢሞከር ምን መዘዝ እንደሚያመጣ ግልፅ ነው።

“የጭቃ ወጥመድ” ዓላማው ቀጣዮቹን ካስኬዶች በጣም ግዙፍ ጉድለቶችን ከመያዝ ማስታገስ ነው። ለምሳሌ፣ቢያንስ የኮድ ክለሳውን የሚያካሂደው ሰው በስህተት በተቀረጸ ኮድ እና የተመሰረቱ የኮድ መስፈርቶችን መጣስ (እንደ ተጨማሪ ቅንፍ ወይም በጣም ጥልቅ በሆነ የጎጆ ቅርንጫፎች) ትኩረቱን ሊከፋፍል አይገባም። እንደ NPEs ያሉ ሳንካዎች በዩኒት ሙከራዎች ተይዘዋል፣ ነገር ግን ከሙከራው በፊት እንኳ ተንታኙ ስህተት መከሰቱን ቢጠቁመን፣ ይህ መጠገንን በከፍተኛ ሁኔታ ያፋጥነዋል።

የማይለዋወጥ ትንተና አልፎ አልፎ ጥቅም ላይ ከዋለ የምርቱን ጥራት የማያሻሽለው ለምንድነው አሁን ግልጽ ነው ብዬ አምናለሁ እና ለውጦችን ከትላልቅ ጉድለቶች ጋር ለማጣራት በቋሚነት ጥቅም ላይ መዋል አለበት ። የማይንቀሳቀስ ተንታኝ መጠቀም የምርትዎን ጥራት ያሻሽላል ወይ የሚለው ጥያቄ፣ “ከቆሻሻ ኩሬ የሚወሰድ ውሃ በቆሻሻ ማጠራቀሚያ ውስጥ ከተላለፈ የመጠጥ ጥራት ይሻሻላል?” ብሎ ከመጠየቅ ጋር እኩል ነው።

ወደ ውርስ ፕሮጀክት መተግበር

ጠቃሚ ተግባራዊ ጥያቄ: የማይለዋወጥ ትንታኔን ወደ ቀጣይነት ባለው ውህደት ሂደት ውስጥ እንደ "ጥራት ያለው በር" እንዴት እንደሚተገበር? በአውቶማቲክ ሙከራዎች ውስጥ, ሁሉም ነገር ግልጽ ነው: የፈተናዎች ስብስብ አለ, የአንዳቸውም ውድቀት ስብሰባው የጥራት በርን አላለፈም ብሎ ለማመን በቂ ምክንያት ነው. በተለዋዋጭ ትንተና ውጤቶች ላይ ተመስርተው በተመሳሳይ መንገድ በር ለመጫን የተደረገው ሙከራ አልተሳካም: በቅርስ ኮድ ውስጥ በጣም ብዙ የትንታኔ ማስጠንቀቂያዎች አሉ, እነሱን ሙሉ በሙሉ ችላ ማለት አይፈልጉም, ነገር ግን ምርትን መላክ ማቆምም አይቻልም. ተንታኝ ማስጠንቀቂያዎችን ስለያዘ ብቻ።

ለመጀመሪያ ጊዜ ጥቅም ላይ ሲውል, ተንታኙ በማንኛውም ፕሮጀክት ላይ እጅግ በጣም ብዙ ማስጠንቀቂያዎችን ያመጣል, አብዛኛዎቹ ከትክክለኛው የምርት አሠራር ጋር የተገናኙ አይደሉም. እነዚህን ሁሉ አስተያየቶች በአንድ ጊዜ ማረም አይቻልም, እና ብዙዎቹ አስፈላጊ አይደሉም. ከሁሉም በላይ, የእኛ ምርት በአጠቃላይ እንደሚሰራ እናውቃለን, ምንም እንኳን የማይንቀሳቀስ ትንታኔን ከማስተዋወቅዎ በፊት!

በውጤቱም ፣ ብዙዎች በስብሰባ ጊዜ በቀላሉ የማይንቀሳቀስ ትንታኔን በመጠቀም ፣ ወይም በመረጃ ሁነታ ብቻ ይጠቀሙበታል ፣ ይህ ምንም ዓይነት ትንታኔ ካለመኖሩ ጋር እኩል ነው, ምክንያቱም ብዙ ማስጠንቀቂያዎች ካሉን, ኮዱን ሲቀይሩ የሌላው ክስተት (ምንም ያህል ከባድ ቢሆን) መከሰቱ ሳይስተዋል ይቀራል.

የሚከተሉት የጥራት በሮች የማስተዋወቅ ዘዴዎች ይታወቃሉ።

  • በጠቅላላው የማስጠንቀቂያዎች ብዛት ወይም በኮድ መስመሮች የተከፋፈሉ የማስጠንቀቂያዎች ብዛት ላይ ገደብ በማዘጋጀት ላይ። ይህ በደካማ ሁኔታ ይሰራል, ምክንያቱም እንዲህ ያለው በር በነፃነት አዳዲስ ጉድለቶችን ለውጦችን ይፈቅዳል, ገደብ እስካልተሰጠ ድረስ.
  • በኮዱ ውስጥ ያሉ ሁሉም የቆዩ ማስጠንቀቂያዎች ችላ እንደተባሉ መጠገን፣ እና አዲስ ማስጠንቀቂያዎች ሲከሰቱ ለመገንባት እምቢ ማለት። ይህ ተግባር የሚቀርበው በPVS-studio እና አንዳንድ የመስመር ላይ ግብዓቶች፣ ለምሳሌ ኮዳሲ ነው። በ PVS-studio ውስጥ ለመስራት እድሉን አላገኘሁም ፣ እንደ ኮዳሲ ካለኝ ልምድ ፣ ዋና ችግራቸው “አሮጌ” እና “አዲስ” ስህተት ምን እንደሆነ መወሰን ሁል ጊዜ የማይሰራ ውስብስብ ስልተ ቀመር ነው ። በትክክል፣ በተለይ ፋይሎች በጣም ከተሻሻሉ ወይም ከተሰየሙ። በእኔ ልምድ ኮዳሲ በጉተታ ጥያቄ ውስጥ አዲስ ማስጠንቀቂያዎችን ችላ ሊል ይችላል ፣ በተመሳሳይ ጊዜ ከ PR ኮድ ለውጦች ጋር ባልተያያዙ ማስጠንቀቂያዎች ምክንያት የመሳብ ጥያቄ አላለፈም።
  • በእኔ አስተያየት በጣም ውጤታማው መፍትሔ በመጽሐፉ ውስጥ የተገለጸው ነው ተከታታይ ማድረስ "የመለጠጥ ዘዴ". መሠረታዊው ሃሳብ የስታቲስቲክ ትንተና ማስጠንቀቂያዎች ቁጥር የእያንዳንዱ ልቀት ንብረት ነው, እና አጠቃላይ የማስጠንቀቂያዎችን ቁጥር የማይጨምሩ ለውጦች ብቻ ይፈቀዳሉ.

አይጥ

በዚህ መንገድ ይሰራል፡-

  1. በመነሻ ደረጃ፣ በተንታኞች በተገኘው ኮድ ውስጥ የማስጠንቀቂያዎች ብዛት ስለተለቀቀው በሜታዳታ ውስጥ መዝገብ ተመዝግቧል። ስለዚህ፣ ወደላይ ሲገነቡ፣ የእርስዎ ማከማቻ አስተዳዳሪ “መለቀቅ 7.0.2” ብቻ ሳይሆን “7.0.2 መልቀቅ 100500 የቼክ ስታይል ማስጠንቀቂያዎችን” ይጽፋል። የላቀ የመረጃ ማከማቻ አስተዳዳሪን (እንደ አርቲፋክተሪ ያለ) የሚጠቀሙ ከሆነ ስለ ልቀትዎ እንደዚህ ያለ ሜታዳታ ማከማቸት ቀላል ነው።
  2. አሁን እያንዳንዱ የመሳብ ጥያቄ፣ ሲገነባ የውጤት ማስጠንቀቂያዎችን ቁጥር አሁን ባለው ልቀት ውስጥ ካሉት የማስጠንቀቂያዎች ብዛት ጋር ያወዳድራል። PR ወደዚህ ቁጥር መጨመር የሚመራ ከሆነ ኮዱ ለስታቲስቲክስ ትንተና የጥራት በርን አያልፍም። የማስጠንቀቂያዎች ቁጥር ከቀነሰ ወይም ካልተቀየረ, ከዚያም ያልፋል.
  3. በሚቀጥለው ልቀት፣ በድጋሚ የተሰላው የማስጠንቀቂያ ቁጥር እንደገና በሚለቀቀው ሜታዳታ ውስጥ ይመዘገባል።

ስለዚህ ቀስ በቀስ ግን በተረጋጋ ሁኔታ (ልክ እንደ አይጥ ሲሰራ) የማስጠንቀቂያዎች ብዛት ወደ ዜሮ ይቀዘቅዛል። እርግጥ ነው, ስርዓቱ አዲስ ማስጠንቀቂያ በማስተዋወቅ ሊታለል ይችላል, ነገር ግን የሌላ ሰውን በማረም. ይህ የተለመደ ነው, ምክንያቱም በሩቅ ርቀት ላይ ውጤቶችን ይሰጣል: ማስጠንቀቂያዎች ይስተካከላሉ, እንደ አንድ ደንብ, በግለሰብ ደረጃ ሳይሆን በአንድ ጊዜ በአንድ ዓይነት ቡድን ውስጥ, እና ሁሉም በቀላሉ ሊወገዱ የሚችሉ ማስጠንቀቂያዎች በፍጥነት ይወገዳሉ.

ይህ ግራፍ ለስድስት ወራት እንዲህ ያለ “ራትሼት” የሚሠራበትን አጠቃላይ የCheckstyle ማስጠንቀቂያዎች ያሳያል ከOpenSource ፕሮጄክቶቻችን አንዱ. የማስጠንቀቂያዎች ብዛት በቅደም ተከተል ቀንሷል ፣ እና ይህ በተፈጥሮ የተከሰተ ነው ፣ ከምርት ልማት ጋር በትይዩ!

ስህተቶችን ለማግኘት ከመጠቀም ይልቅ በሂደቱ ውስጥ የማይለዋወጥ ትንታኔን ይተግብሩ

እኔ የዚህ ዘዴ የተቀየረ እትም እጠቀማለሁ፣ ማስጠንቀቂያዎችን በፕሮጀክት ሞጁል እና በመተንተን መሳሪያ ለየብቻ በመቁጠር የ YAML ፋይል ከግንባታ ሜታዳታ ጋር ይህን የሚመስል

celesta-sql:
  checkstyle: 434
  spotbugs: 45
celesta-core:
  checkstyle: 206
  spotbugs: 13
celesta-maven-plugin:
  checkstyle: 19
  spotbugs: 0
celesta-unit:
  checkstyle: 0
  spotbugs: 0

በማንኛውም የላቀ CI ሲስተም ውስጥ ራትቼት በፕለጊን እና በሶስተኛ ወገን መሳሪያዎች ላይ ሳይመሰረቱ ለማንኛውም የማይንቀሳቀስ ትንተና መሳሪያዎች ሊተገበር ይችላል. እያንዳንዱ ተንታኝ ለመተንተን ቀላል በሆነ የጽሑፍ ወይም የኤክስኤምኤል ቅርጸት የራሱን ዘገባ ያዘጋጃል። የሚቀረው በ CI ስክሪፕት ውስጥ አስፈላጊውን ሎጂክ መጻፍ ብቻ ነው። ይህ በጄንኪንስ እና አርቲፋክተሪ ላይ በተመሰረቱ የክፍት ምንጭ ፕሮጄክቶቻችን ውስጥ እንዴት እንደሚተገበር ማየት ይችላሉ። እዚህ ወይም እዚህ. ሁለቱም ምሳሌዎች በቤተ-መጽሐፍት ላይ ይወሰናሉ ራትቼሊብ: ዘዴ countWarnings() በተለመደው መንገድ በ Checkstyle እና Spotbugs በተፈጠሩ ፋይሎች ውስጥ የ xml መለያዎችን ይቆጥራል፣ እና compareWarningMaps() በማናቸውም ምድቦች ውስጥ ያሉ የማስጠንቀቂያዎች ብዛት ሲጨምር ስህተትን በመወርወር ያው ራትቼትን ተግባራዊ ያደርጋል።

አስፐል በመጠቀም የአስተያየቶችን ፣ የጽሑፍ ቀጥተኛ ቃላትን እና ሰነዶችን የፊደል አጻጻፍ ለመተንተን የሚያስደስት የ “ratchet” ትግበራ ይቻላል ። እንደሚታወቀው የፊደል አጻጻፍ ሲፈተሽ ለመደበኛ መዝገበ ቃላት የማይታወቁ ሁሉም ቃላት የተሳሳቱ አይደሉም፡ ወደ ተጠቃሚ መዝገበ ቃላት ሊጨመሩ ይችላሉ። ብጁ መዝገበ ቃላት የፕሮጀክቱ ምንጭ ኮድ አካል ካደረጉት፣ የፊደል አጻጻፍ ጥራት ያለው በር በዚህ መንገድ ሊቀረጽ ይችላል፡ አስፔልን ከመደበኛ እና ብጁ መዝገበ ቃላት ጋር ማስኬድ። አይገባም የፊደል ስህተቶች አያገኙም።

የትንታኔውን ስሪት ስለማስተካከል አስፈላጊነት

በማጠቃለያው ሊታወቅ የሚገባው ነጥብ በአቅርቦት መስመርዎ ላይ ትንታኔን እንዴት ቢተገብሩም የመተንተን ሥሪት መስተካከል አለበት። ተንታኙ በራስ-ሰር እንዲዘምን ከፈቀዱ የሚቀጥለውን የመጎተት ጥያቄ በሚሰበስቡበት ጊዜ ከኮድ ለውጦች ጋር ያልተዛመዱ አዳዲስ ጉድለቶች “ብቅ” ሊሉ ይችላሉ ፣ ግን አዲሱ ተንታኝ በቀላሉ ብዙ ጉድለቶችን ማግኘት ከመቻሉ ጋር ይዛመዳል - እና ይህ የመሳብ ጥያቄዎችን የመቀበል ሂደትዎን ያበላሻል። ተንታኝ ማሻሻል በንቃተ ህሊና የተሞላ እርምጃ መሆን አለበት። ነገር ግን የእያንዳንዱን የስብሰባ አካል ስሪት ግትር ማስተካከል በአጠቃላይ አስፈላጊ መስፈርት እና የተለየ ውይይት ርዕስ ነው።

ግኝቶች

  • የማይንቀሳቀስ ትንታኔ ለእርስዎ ስህተቶችን አያገኝም እና በአንድ መተግበሪያ ምክንያት የምርትዎን ጥራት አያሻሽልም። በጥራት ላይ አዎንታዊ ተጽእኖ ሊገኝ የሚችለው በአቅርቦት ሂደት ውስጥ በቋሚነት ጥቅም ላይ ሲውል ብቻ ነው.
  • ስህተቶችን መፈለግ በጭራሽ የትንታኔ ዋና ተግባር አይደለም ፣ አብዛኛዎቹ ጠቃሚ ተግባራት በክፍት ምንጭ መሳሪያዎች ውስጥ ይገኛሉ።
  • ለትሩፋት ኮድ “ራትሼት”ን በመጠቀም የማቅረቢያ ቧንቧው የመጀመሪያ ደረጃ ላይ በስታቲስቲክስ ትንተና ውጤቶች ላይ በመመስረት የጥራት በሮች ይተግብሩ።

ማጣቀሻዎች

  1. ተከታታይ ማድረስ
  2. A. Kudryavtsev፡ የፕሮግራም ትንተና፡ ጥሩ ፕሮግራመር መሆንህን እንዴት መረዳት ትችላለህ በተለያዩ የኮድ ትንተና ዘዴዎች ላይ ሪፖርት አድርግ (ቋሚ ብቻ ሳይሆን!)

ምንጭ: hab.com

አስተያየት ያክሉ