company_banner

DeepCode — система анализа кода на базе глубинного обучения

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

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


    Кликабельно

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

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

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

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

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

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

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

    С официальной документацией можно ознакомиться тут.
    ITSumma
    Собираем безумных людей и вместе спасаем интернет

    Комментарии 10

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

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

        0
        Давно пора. Странно, что в 2019 году машины умеют распознавать кота едущего на скейте, но не могут распознать тип переменной или связи между модулями, если явно не указать.
          0
          Ну после этого будет недалеко до полной автоматизации разработки.
            +1
            После чего «этого» («будет недалеко до полной автоматизации разработки»)?
              0
              Ну конечно «распознать тип переменно» и «связи между модулями» после этого можно останется лишь анализ архитектуры, по которой текут данные, и сеть сможет их строить сама такие потоки и формы, а другие сети их читать и делать коммиты. =)
                0
                Ну конечно «распознать тип переменно» и «связи между модулями» после этого можно останется лишь анализ архитектуры, по которой текут данные

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

          0

          Не взлетит.

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

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

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое