የኮድ ስህተቶችን ለመለየት ኢንቴል የተከፈተ የ ControlFlag ማሽን መማሪያ ስርዓት

ኢንቴል የኮድ ጥራትን ለማሻሻል የማሽን መማሪያ ስርዓትን ለመፍጠር ያለመ ከ ControlFlag የምርምር ፕሮጀክት ጋር የተያያዙ እድገቶችን አግኝቷል። በፕሮጀክቱ የተዘጋጀው የመሳሪያ ኪት በከፍተኛ ደረጃ ባለው ኮድ በሰለጠነ ሞዴል ላይ በመመስረት እንደ C/C++ ባሉ ከፍተኛ ቋንቋዎች የተፃፉ የተለያዩ ስህተቶችን እና ያልተለመዱ ነገሮችን ለመለየት ያስችላል። ስርዓቱ በኮድ ውስጥ ያሉ የተለያዩ ችግሮችን ለመለየት፣ የትየባ እና የተሳሳቱ አይነት ውህዶችን ከመለየት፣ የጠቋሚ እና የማስታወስ ችግር ያለባቸውን የ NULL እሴት ፍተሻዎች ለመለየት ምቹ ነው። የመቆጣጠሪያ ፍላግ ኮድ በC++ የተፃፈ ሲሆን በ MIT ፍቃድ የተከፈተ ነው።

ስርዓቱ በ GitHub እና በመሳሰሉት የህዝብ ማከማቻዎች ውስጥ የታተሙትን ክፍት ፕሮጄክቶች ስታቲስቲካዊ ሞዴል በመገንባት እራስን እየተማረ ነው። በስልጠናው ደረጃ, ስርዓቱ በኮዱ ውስጥ መዋቅሮችን ለመገንባት የተለመዱ ንድፎችን ይወስናል እና በእነዚህ ቅጦች መካከል ያለውን የግንኙነት ዛፍ ይገነባል, ይህም በፕሮግራሙ ውስጥ ያለውን የኮድ አፈፃፀም ፍሰት ያሳያል. በውጤቱም, የሁሉንም የተተነተኑ ምንጭ ኮዶች የእድገት ልምድን የሚያጣምር የማጣቀሻ የውሳኔ አሰጣጥ ዛፍ ተፈጠረ.

እየተገመገመ ያለው ኮድ በማጣቀሻ ውሳኔ ዛፍ ላይ የተረጋገጡ ቅጦችን የመለየት ሂደት ተመሳሳይ ነው። ከአጎራባች ቅርንጫፎች ጋር ትልቅ አለመግባባቶች እየተፈተሸ ባለው ስርዓተ-ጥለት ላይ ያልተለመደ ሁኔታ መኖሩን ያመለክታሉ. ስርዓቱ በአብነት ውስጥ ያለውን ስህተት ለመለየት ብቻ ሳይሆን እርማትን ለመጠቆምም ይፈቅድልዎታል. ለምሳሌ, በ OpenSSL ኮድ ውስጥ, "(s1 == NULL)" (s2 == NULL)" ግንባታው ተለይቷል, ይህም በአገባብ ዛፉ ውስጥ 8 ጊዜ ብቻ የታየ ሲሆን በጣም ቅርብ የሆነው ቅርንጫፍ ደግሞ "(s1 ==)" ኑል) || (s2 == NULL)” ወደ 7 ሺህ ጊዜ ያህል ተከስቷል። ስርዓቱ እንዲሁ ያልተለመደ “(s1 == NULL) | (s2 == NULL)” በዛፉ ውስጥ 32 ጊዜ ታየ።

የኮድ ስህተቶችን ለመለየት ኢንቴል የተከፈተ የ ControlFlag ማሽን መማሪያ ስርዓት

የኮድ ቁርጥራጭን ሲተነተን "ከ (x = 7) y = x;" ስርዓቱ የ "ተለዋዋጭ == ቁጥር" ግንባታ አብዛኛውን ጊዜ በ "If" ኦፕሬተር ውስጥ የቁጥር እሴቶችን ለማነፃፀር ጥቅም ላይ እንደሚውል ወስኗል, ስለዚህ በ "if" አገላለጽ ውስጥ ያለው "ተለዋዋጭ = ቁጥር" አመላካች በ a ታይፖ ባህላዊ የማይንቀሳቀስ analyzers እንዲህ ያለ ስህተት ያዘ ነበር, ነገር ግን ከእነርሱ በተለየ, ControlFlag ሁሉ በተቻለ አማራጮች ለማቅረብ አስቸጋሪ ነው ይህም ውስጥ ዝግጁ ሠራሽ ደንቦችን አይተገበርም, ነገር ግን ብዙ ቁጥር ውስጥ የተለያዩ መዋቅሮች አጠቃቀም ስታቲስቲክስ ላይ የተመሠረተ ነው. የፕሮጀክቶች.

እንደ ሙከራ፣ የCURL መገልገያ ምንጭ ኮድ ውስጥ ControlFlagን በመጠቀም፣ ብዙ ጊዜ ከፍተኛ ጥራት ያለው እና የተፈተነ ኮድ ምሳሌ ሆኖ የሚጠቀሰው፣ በስታቲስቲክ ተንታኞች ያልታወቀ ስህተት “s->keepon” የመዋቅር አባል ሲጠቀሙ ታይቷል። የቁጥር አይነት የነበረው ነገር ግን ከቦሊያን ዋጋ ጋር ተነጻጽሯል እውነተኛ . በክፍት ኤስኤስኤል ኮድ፣ ከላይ ከተጠቀሰው ችግር በተጨማሪ በ"(s1 == NULL) ∧ (s2 == NULL)"፣ በ"(-2 == rv)" (-XNUMX == rv)" (መቀነሱ) ውስጥ ያልተለመዱ ነገሮችም ተለይተዋል። የትየባ) እና "BIO_puts(bp, ":")

ምንጭ: opennet.ru

አስተያየት ያክሉ