В основе технологии, предлагаемой командой DeepCode, лежит семантический анализ кода вкупе с обучением нейросети с помощью Big Data. Самое интересное в этой разработке то, что в качестве базы данных для обучения сети будет использоваться код публичных репозиториев GitHub.
![](https://habrastorage.org/webt/mc/oe/zp/mcoezptfvdm2yhyfhib3-30awtw.png)
Кликабельно
Весь процесс разработчики разделяют на несколько этапов. Первый — разметка базы, то есть парсинг самого GitHub и сортировка данных. В качестве главного параметра будет выступать язык программирования, на котором написан проект. Далее идет разметка данных и подготовка спаршенного кода к потреблению нейросетью. Ну и последний, третий этап — это обучение самого DeepCode.
На выходе мы получаем продукт, который способен анализировать загруженный код не только со стороны банального синтаксиса и наличия фактически ошибок, но и с точки зрения его полезности. Как пример приводится анализ пулл-реквестов в мастер на том же гитхабе.
DeepCode будет способен ответить не только на вопрос «сколько в коде ошибок», но и выдать информацию по количеству новых фич и потенциальных конфликтов с имеющейся кодовой базой. То есть разработка способна проводить как код-ревью, так и QA-аудит кода.
Разработчики уверяют, что в отличие от других популярных анализаторов кода DeepCode будет сосредоточен не просто на соблюдении синтаксиса и поиске ошибок форматирования, но сможет выявлять и серьезные проблемы. В пример приводится выявление XSS или SQL-инъекций.
Все это становится доступным именно из-за первоначального источника данных для обучения системы — благодаря open source проектам на GitHub. Именно благодаря открытому исходному коду разработчики могут тренировать сеть не только в разрезе того, как должен выглядеть правильный код, но и добавлять в процесс обучения анализ данных по вносимым изменениям по ходу развития проекта. То есть DeepCode учится не на статичных репозиториях, а анализирует весь когда-либо написанный в рамках проекта код. Таким образом, система может выработать для себя общие принципы анализа и изучить логику разработки, видеть в ходе обучения как сами ошибки, так и пути их исправления.
DeepCode доступен уже в тестовом режиме и опробовать его возможности можно тут после авторизации через GitHub или Bitbucket.
Для тех, кто использует локальные системы хранения кода, команда предлагает возможность интеграции через docker-контейнер, который предоставляется по запросу. Оформить запрос можно по этому адресу электронной почты.
С официальной документацией можно ознакомиться тут.
Комментарии (9)
rboots
06.08.2019 18:03Давно пора. Странно, что в 2019 году машины умеют распознавать кота едущего на скейте, но не могут распознать тип переменной или связи между модулями, если явно не указать.
Andrey_Dolg
06.08.2019 19:48Ну после этого будет недалеко до полной автоматизации разработки.
plus79501445397
07.08.2019 10:17+1После чего «этого» («будет недалеко до полной автоматизации разработки»)?
Andrey_Dolg
07.08.2019 11:07Ну конечно «распознать тип переменно» и «связи между модулями» после этого можно останется лишь анализ архитектуры, по которой текут данные, и сеть сможет их строить сама такие потоки и формы, а другие сети их читать и делать коммиты. =)
lair
07.08.2019 12:04Ну конечно «распознать тип переменно» и «связи между модулями» после этого можно останется лишь анализ архитектуры, по которой текут данные
"потом нарисуйте оставшуюся сову"
alekam
08.08.2019 13:15Попробовал. Интересная штука. Попробовал на небольших open source библиотеках, которые мы во всех проектах используем. SonarQube выдает больше информации, по функционалу примерно похоже, у этой штуки есть ложные срабатывания (не критично). Отчеты генерируются быстро. По коду дает интересные советы, показывает по своим советам примеры из открытых репозиториев — вот это мне показалось интересным. Видно что часть этих советов даже для какого-нибудь навороченного линтера сложноваты. В статье явно не говорится, но похоже что фишка сервиса — анализ изменений в других репозиториях и предложениях сделать так же в предложенном ему репозитории. Я загрузил репозиторий с кодом на python2, мне предложили внести несколько правок, чтобы добавить совместимость с python3 и показали репозитории где уже сделаны аналогичные правки.
В целом проект годный, свою нишу найдет. Я когда впервые увидел SonarQube был немного удивлен сколько там всего показывается, здесь же минималистичный дизайн, многим понравится.plus79501445397
08.08.2019 17:05Если вы уже попробовали, то наверно можете пояснить насчет фразы «Далее идет разметка данных и подготовка спаршенного кода к потреблению нейросетью». Кто эту разметку/подготовку должен делать(пользователь/они сами/их система)?
Если это делает пользователь, то не напряжно ли?
И еще «SEMANTIC FACTS» (у них на схеме) откуда берется?
andreyons
Там не так много действительно хорошего кода, чтобы на нём чему-то учиться.