ఇంటెల్ కంట్రోల్ఫ్లాగ్ 1.0 సాధనం యొక్క మొదటి ప్రధాన విడుదలను ప్రచురించింది, ఇది ఇప్పటికే ఉన్న పెద్ద మొత్తంలో ఉన్న కోడ్పై శిక్షణ పొందిన మెషీన్ లెర్నింగ్ సిస్టమ్ను ఉపయోగించి సోర్స్ కోడ్లో లోపాలు మరియు క్రమరాహిత్యాలను గుర్తించడానికి మిమ్మల్ని అనుమతిస్తుంది. సాంప్రదాయ స్టాటిక్ ఎనలైజర్ల వలె కాకుండా, ControlFlag రెడీమేడ్ నియమాలను వర్తించదు, దీనిలో సాధ్యమయ్యే అన్ని ఎంపికలను అందించడం కష్టం, కానీ ఇప్పటికే ఉన్న అనేక ప్రాజెక్ట్లలో వివిధ భాషా నిర్మాణాల ఉపయోగంపై గణాంకాలపై ఆధారపడి ఉంటుంది. కంట్రోల్ ఫ్లాగ్ కోడ్ C++లో వ్రాయబడింది మరియు MIT లైసెన్స్ క్రింద ఓపెన్ సోర్స్ చేయబడింది.
GitHub మరియు ఇలాంటి పబ్లిక్ రిపోజిటరీలలో ప్రచురించబడిన ఓపెన్ సోర్స్ ప్రాజెక్ట్ల ప్రస్తుత కోడ్ శ్రేణి యొక్క గణాంక నమూనాను రూపొందించడం ద్వారా సిస్టమ్ శిక్షణ పొందింది. శిక్షణ దశలో, సిస్టమ్ కోడ్లో నిర్మాణాలను నిర్మించడానికి సాధారణ నమూనాలను నిర్ణయిస్తుంది మరియు ప్రోగ్రామ్లోని కోడ్ అమలు యొక్క ప్రవాహాన్ని ప్రతిబింబిస్తూ ఈ నమూనాల మధ్య కనెక్షన్ల యొక్క వాక్యనిర్మాణ వృక్షాన్ని నిర్మిస్తుంది. ఫలితంగా, అన్ని విశ్లేషించబడిన సోర్స్ కోడ్ల అభివృద్ధి అనుభవాన్ని మిళితం చేసే రిఫరెన్స్ డెసిషన్ మేకింగ్ ట్రీ ఏర్పడుతుంది. సమీక్షలో ఉన్న కోడ్ రిఫరెన్స్ డెసిషన్ ట్రీకి వ్యతిరేకంగా తనిఖీ చేయబడిన నమూనాలను గుర్తించే ప్రక్రియకు లోనవుతుంది. పొరుగు శాఖలతో ఉన్న పెద్ద వ్యత్యాసాలు తనిఖీ చేయబడిన నమూనాలో అసాధారణత ఉనికిని సూచిస్తాయి.
ControlFlag యొక్క సామర్థ్యాలకు ఉదాహరణగా, డెవలపర్లు OpenSSL మరియు cURL ప్రాజెక్ట్ల సోర్స్ కోడ్లను విశ్లేషించారు:
- క్రమరహిత నిర్మాణాలు “(s1 == NULL) ∧ (s2 == NULL)” మరియు “(s1 == NULL) | (s2 == NULL)" , ఇది సాధారణంగా ఉపయోగించే నమూనాతో సరిపోలడం లేదు "(s1 == NULL) || (s2 == NULL)". కోడ్ “(-2 == rv)” (మైనస్ అక్షరదోషం) మరియు “BIO_puts(bp, “:”) <= 0)” (విజయవంతంగా పూర్తి కావడాన్ని తనిఖీ చేసే సందర్భంలో) వ్యక్తీకరణలలో క్రమరాహిత్యాలను కూడా గుర్తించింది. ఫంక్షన్ అది “== 0") అయి ఉండాలి.
- CURLలో, స్ట్రక్చర్ ఎలిమెంట్ “s->కీపాన్”ను ఉపయోగిస్తున్నప్పుడు స్టాటిక్ ఎనలైజర్ల ద్వారా గుర్తించబడని లోపం కనుగొనబడింది, ఇది సంఖ్యా రకాన్ని కలిగి ఉంది, కానీ బూలియన్ విలువ TRUEతో పోల్చబడింది.
ControlFlag 1.0 సంస్కరణ యొక్క లక్షణాలలో, C భాష కోసం ప్రామాణిక టెంప్లేట్లకు పూర్తి మద్దతు మరియు షరతులతో కూడిన "if" వ్యక్తీకరణలలో క్రమరాహిత్యాలను గుర్తించే సామర్థ్యం ఉంది. ఉదాహరణకు, కోడ్ భాగాన్ని విశ్లేషించేటప్పుడు “if (x = 7) y = x;” సంఖ్యా విలువలను పోల్చడానికి “if” స్టేట్మెంట్ సాధారణంగా “వేరియబుల్ == నంబర్” నిర్మాణాన్ని ఉపయోగిస్తుందని సిస్టమ్ నిర్ధారిస్తుంది, కాబట్టి “if” వ్యక్తీకరణలోని “వేరియబుల్ = సంఖ్య” అక్షర దోషం వల్ల సంభవించే అవకాశం ఉంది. కిట్ GitHubలో ఇప్పటికే ఉన్న C లాంగ్వేజ్ రిపోజిటరీలను డౌన్లోడ్ చేయడానికి మరియు మోడల్ను రూపొందించడానికి వాటిని ఉపయోగించడానికి మిమ్మల్ని అనుమతించే స్క్రిప్ట్ను కలిగి ఉంటుంది. రెడీమేడ్ మోడల్లు కూడా అందుబాటులో ఉన్నాయి, మీరు వెంటనే కోడ్ని తనిఖీ చేయడం ప్రారంభించవచ్చు.
మూలం: opennet.ru