በሲ ኮድ ውስጥ ስህተቶችን ለመለየት የሚረዳ የ ControlFlag 1.0 መልቀቅ

ኢንቴል የመጀመርያውን የ ControlFlag 1.0 መሳሪያ አሳትሟል፣ይህም ስህተቶችን እና ስህተቶችን በምንጭ ኮድ ውስጥ ለይተው ማወቅ በሚያስችሉት ብዛት ባለው ኮድ የሰለጠነ የማሽን መማሪያ ስርዓትን በመጠቀም ነው። ከተለምዷዊ የማይንቀሳቀሱ ተንታኞች በተቃራኒ ControlFlag ሁሉንም ሊሆኑ የሚችሉ አማራጮችን ለማቅረብ አስቸጋሪ በሆነበት ዝግጁ የሆኑ ደንቦችን አይተገበርም, ነገር ግን በርካታ የቋንቋ ግንባታዎችን በበርካታ ነባር ፕሮጀክቶች ላይ በስታቲስቲክስ ላይ የተመሰረተ ነው. የመቆጣጠሪያ ፍላግ ኮድ በC++ የተፃፈ ሲሆን በ MIT ፍቃድ የተከፈተ ነው።

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

በሲ ኮድ ውስጥ ስህተቶችን ለመለየት የሚረዳ የ ControlFlag 1.0 መልቀቅ

እንደ የ ControlFlag ችሎታዎች ምሳሌ፣ ገንቢዎቹ የOpenSSL እና cURL ፕሮጀክቶችን የምንጭ ኮዶችን ተንትነዋል፡-

  • ያልተለመዱ ግንባታዎች "(s1 == NULL) ∧ (s2 == NULL)" እና "(s1 == NULL) | (s2 == NULL)"፣ በተለምዶ ከሚጠቀመው ስርዓተ-ጥለት ጋር የማይዛመድ "(s1 == NULL) || (s2 == NULL)". ኮዱ “(-2 == rv)” (ቀነሰው የትየባ ነበር) እና “BIO_puts(bp, “:”) <= 0) በሚለው አገላለጾች ውስጥ ያልተለመዱ ነገሮችን ለይቷል ተግባር “== 0” መሆን ነበረበት።
  • በCURL ውስጥ፣ የቁጥር ዓይነት የነበረው፣ ነገር ግን ከቦሊያን ዋጋ TRUE ጋር የተነጻጸረ የመዋቅር ኤለመንት “s->keepon”ን ሲጠቀሙ በስታቲክ ተንታኞች ያልተገኘ ስህተት ተገኘ።

ከመቆጣጠሪያ ፍላግ 1.0 ስሪት ባህሪያት መካከል ለ C ቋንቋ መደበኛ አብነቶች ሙሉ ድጋፍ እና በሁኔታዊ "ከሆነ" አገላለጾች ውስጥ ያልተለመዱ ነገሮችን የመለየት ችሎታ አለ. ለምሳሌ፣ የኮድ ቁርጥራጭን ሲተነተን “if (x = 7) y = x;” አሃዛዊ እሴቶችን ለማነፃፀር የ‹‹If›› መግለጫው አብዛኛውን ጊዜ የ‹‹ተለዋዋጭ == ቁጥር›› ግንባታን እንደሚጠቀም ሥርዓቱ ይወስናል፣ ስለዚህ በ‹‹If›› አገላለጽ ውስጥ ያለው “ተለዋዋጭ = ቁጥር” በታይፖ የተፈጠረ የመሆኑ እድሉ ከፍተኛ ነው። ኪቱ ነባር የC ቋንቋ ማከማቻዎችን በ GitHub ላይ እንዲያወርዱ እና ሞዴሉን ለመገንባት የሚጠቀሙበት ስክሪፕት ያካትታል። ኮዱን ወዲያውኑ መፈተሽ እንዲጀምሩ የሚያስችልዎ ዝግጁ የሆኑ ሞዴሎችም ይገኛሉ።

ምንጭ: opennet.ru

አስተያየት ያክሉ