Швейцарский стартап DeepCode разрабатывает систему автоматического код-ревью на базе глубинного обучения, сообщает venturebeat. На днях компания закрыла первый инвестиционный раунд и получила на свое развитие $4 млн.

В основе технологии, предлагаемой командой DeepCode, лежит семантический анализ кода вкупе с обучением нейросети с помощью Big Data. Самое интересное в этой разработке то, что в качестве базы данных для обучения сети будет использоваться код публичных репозиториев GitHub.


Кликабельно

Весь процесс разработчики разделяют на несколько этапов. Первый — разметка базы, то есть парсинг самого GitHub и сортировка данных. В качестве главного параметра будет выступать язык программирования, на котором написан проект. Далее идет разметка данных и подготовка спаршенного кода к потреблению нейросетью. Ну и последний, третий этап — это обучение самого DeepCode.

На выходе мы получаем продукт, который способен анализировать загруженный код не только со стороны банального синтаксиса и наличия фактически ошибок, но и с точки зрения его полезности. Как пример приводится анализ пулл-реквестов в мастер на том же гитхабе.

DeepCode будет способен ответить не только на вопрос «сколько в коде ошибок», но и выдать информацию по количеству новых фич и потенциальных конфликтов с имеющейся кодовой базой. То есть разработка способна проводить как код-ревью, так и QA-аудит кода.

Разработчики уверяют, что в отличие от других популярных анализаторов кода DeepCode будет сосредоточен не просто на соблюдении синтаксиса и поиске ошибок форматирования, но сможет выявлять и серьезные проблемы. В пример приводится выявление XSS или SQL-инъекций.

Все это становится доступным именно из-за первоначального источника данных для обучения системы — благодаря open source проектам на GitHub. Именно благодаря открытому исходному коду разработчики могут тренировать сеть не только в разрезе того, как должен выглядеть правильный код, но и добавлять в процесс обучения анализ данных по вносимым изменениям по ходу развития проекта. То есть DeepCode учится не на статичных репозиториях, а анализирует весь когда-либо написанный в рамках проекта код. Таким образом, система может выработать для себя общие принципы анализа и изучить логику разработки, видеть в ходе обучения как сами ошибки, так и пути их исправления.

DeepCode доступен уже в тестовом режиме и опробовать его возможности можно тут после авторизации через GitHub или Bitbucket.

Для тех, кто использует локальные системы хранения кода, команда предлагает возможность интеграции через docker-контейнер, который предоставляется по запросу. Оформить запрос можно по этому адресу электронной почты.

С официальной документацией можно ознакомиться тут.

Комментарии (9)


  1. andreyons
    06.08.2019 14:58
    +1

    в качестве базы данных для обучения сети будет использоваться код публичных репозиториев GitHub

    Там не так много действительно хорошего кода, чтобы на нём чему-то учиться.


  1. rboots
    06.08.2019 18:03

    Давно пора. Странно, что в 2019 году машины умеют распознавать кота едущего на скейте, но не могут распознать тип переменной или связи между модулями, если явно не указать.


    1. Andrey_Dolg
      06.08.2019 19:48

      Ну после этого будет недалеко до полной автоматизации разработки.


      1. plus79501445397
        07.08.2019 10:17
        +1

        После чего «этого» («будет недалеко до полной автоматизации разработки»)?


        1. Andrey_Dolg
          07.08.2019 11:07

          Ну конечно «распознать тип переменно» и «связи между модулями» после этого можно останется лишь анализ архитектуры, по которой текут данные, и сеть сможет их строить сама такие потоки и формы, а другие сети их читать и делать коммиты. =)


          1. lair
            07.08.2019 12:04

            Ну конечно «распознать тип переменно» и «связи между модулями» после этого можно останется лишь анализ архитектуры, по которой текут данные

            "потом нарисуйте оставшуюся сову"


  1. Druu
    07.08.2019 08:41

    Не взлетит.


  1. alekam
    08.08.2019 13:15

    Попробовал. Интересная штука. Попробовал на небольших open source библиотеках, которые мы во всех проектах используем. SonarQube выдает больше информации, по функционалу примерно похоже, у этой штуки есть ложные срабатывания (не критично). Отчеты генерируются быстро. По коду дает интересные советы, показывает по своим советам примеры из открытых репозиториев — вот это мне показалось интересным. Видно что часть этих советов даже для какого-нибудь навороченного линтера сложноваты. В статье явно не говорится, но похоже что фишка сервиса — анализ изменений в других репозиториях и предложениях сделать так же в предложенном ему репозитории. Я загрузил репозиторий с кодом на python2, мне предложили внести несколько правок, чтобы добавить совместимость с python3 и показали репозитории где уже сделаны аналогичные правки.

    В целом проект годный, свою нишу найдет. Я когда впервые увидел SonarQube был немного удивлен сколько там всего показывается, здесь же минималистичный дизайн, многим понравится.


    1. plus79501445397
      08.08.2019 17:05

      Если вы уже попробовали, то наверно можете пояснить насчет фразы «Далее идет разметка данных и подготовка спаршенного кода к потреблению нейросетью». Кто эту разметку/подготовку должен делать(пользователь/они сами/их система)?
      Если это делает пользователь, то не напряжно ли?
      И еще «SEMANTIC FACTS» (у них на схеме) откуда берется?