В DeepCode мы всегда сосредоточены на обнаружении важных ошибок программного обеспечения и на том, чтобы быть инструментом, который может улучшить и даже заменить тестирование. Для этого нам нужно обнаружить семантические дефекты программного обеспечения и предоставить условия, при которых дефекты обнаруживаются. Недостаточно запустить глубокую нейронную сеть, которая сообщает, что с программным обеспечением что-то не так: вы также должны предоставить объяснение.

В рамках этих усилий мы представили новую технику искусственного интеллекта под названием «Онтология». В Ontology мы интегрировали возможность представления логических выводов непосредственно в движке DeepCode. Вот как это работает на некоторых интересных примерах (для доступа к ним вам понадобится учетная запись GitHub). В первом примере get вызывается для возможно пустой коллекции, и это может вернуть null и привести к NullPointerException. Для этого DeepCode рассуждает о коллекциях, обдумывает их значения, а также может обнаруживать ошибки и объяснять их - все в удобном интерфейсе.

Пример 1: (Ссылка - требуется учетная запись GitHub)

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

Пример 2: (Ссылка - требуется учетная запись GitHub)

Это еще не все: DeepCode может найти тысячи других шаблонов, извлеченных из исправлений в программном обеспечении с открытым исходным кодом, а также уязвимости безопасности и многие другие проблемы. Попробуйте и дайте нам знать, как это работает для вас.

Веселин Райчев

Технический директор и соучредитель