Облачный сервис DeepCode, предназначенный для поиска в исходном коде программ уязвимостей и потенциальных ошибок с использованием методов машинного обучения, теперь может анализировать код на языках Си и C++. Создатели DeepCode считают, что он способен проводить анализ более качественно и подробно, чем традиционные средства анализа кода, потому что он анализирует код в контексте — не просто как текст, а как работающую программу.
Именно в коде на языках Си и C++ обнаруживается самое большое количество уязвимостей. Эти языки, несмотря на всю свою мощность, мало защищают разработчика от ошибок, а новые версии языков должны сохранять совместимость со старыми и поэтому во многом тоже остаются уязвимыми. DeepCode обучен на тысячах проектов с открытым исходным кодом и способен распознать многие распространенные ошибки и недочеты в программах: проблемы со стилем кода, утечки ресурсов, проблемы выделения памяти, обработки дат и несовместимости с различными версиями языка. DeepCode может обнаружить отсутствие проверок аргументов, передаваемых через командную строку, использование указателей после освобождения памяти и даже более тонкие проблемы — например, небезопасное создание временных файлов. Кроме Си и C++, DeepCode сейчас поддерживает Java, JavaScript, TypeScript и Python.