Ohjelmointi

DeepCode tuo tekoälypohjaisen koodin tarkistuksen C- ja C ++ -järjestelmiin

DeepCode, pilvipalvelu, joka käyttää koneoppimista koodipohjien analysointiin tietoturva- ja mahdollisten virheiden varalta, voi nyt analysoida C- ja C ++ -koodeja.

Analysoimalla tuhansia avoimen lähdekoodin projekteja DeepCode tarjoaa palautetta koodin isännöintialustojen tai paikallisten arkistojen projekteille. DeepCoden tekijät väittävät, että se tarjoaa parempaa ja yksityiskohtaisempaa palautetta kuin perinteiset koodianalyysityökalut, koska se analysoi koodia kontekstissa - ei pelkästään tekstinä, vaan myös juoksevana ohjelmistona.

Suurin osa ohjelmistojen haavoittuvuuksista ilmenee C- tai C ++ -koodipohjoissa. Yhtä tehokkaita kuin nämä kaksi kieltä ovat, ne tarjoavat vain vähän tai ei lainkaan suojaa kehittäjien virheiltä, ​​ja näiden kielten uudemmat versiot pakotetaan säilyttämään taaksepäin yhteensopivuus ja pysymään siten haavoittuvina.

DeepCoden tietokanta käsittää monia yleisiä ongelmia, jotka löytyvät C: stä ja C ++: sta sekä muista kielistä: tyyliongelmat, resurssivuodot, muistin jakamiseen liittyvät ongelmat, päivämäärän käsittelyongelmat ja kieliversioiden yhteensopimattomuudet.

Analysoitaessa Linux-ydintä, DeepCode löysi useita yleisiä ongelmia C-koodipohjoissa, mukaan lukien komentoriviargumenteista tai ympäristömuuttujista välitetyt sanomaton parametrit, käytön jälkeiset ongelmat ja puuttuvien nollatarkistusten tarkistukset. Muut C-koodin asiat ovat hienovaraisempia, kuten väliaikaisten tiedostojen epävarma luominen tai mahdollisuus, että tietyt ohjeet saatetaan optimoida kääntämisen aikana eikä niillä ole aiottua vaikutusta.

Alun perin käynnistettyään DeepCode tuki Java, JavaScript, TypeScript ja Python, mutta suunnitelmat olivat taulukossa C, C ++ ja muille kielille. C / C ++ -tukea koskevasta blogiviestistä käy ilmi, että C: n ja C ++: n koodianalyysin lisääminen kesti kolme kuukautta työtä C / C ++: n matalan tason ominaisuuksien monimutkaisuuden vuoksi.

$config[zx-auto] not found$config[zx-overlay] not found