Почему мы строим

Одна вещь, которую мы узнали на r2c, заключается в том, что большинство разработчиков Python или JavaScript никогда не слышали - не говоря уже об использовании - инструментов, которые некоторые разработчики используют для поиска глубоких недостатков в коде: таких как Codenomicon, который нашел Heartbleed, или Зонколан в Facebook, который находит серьезные проблемы безопасности больше, чем любые человеческие усилия. Эти инструменты не только обнаруживают серьезные проблемы, но и экономят время, выявляя сотни тысяч проблем раньше, чем люди.

Мы считаем, что каждый разработчик заслуживает доступа к мощным инструментам, но большинство не знает о них или не может себе их позволить. Миссия r2c - сделать эти инструменты доступными для тех, кто хочет находить ошибки, обнаруживать проблемы с безопасностью и экономить время, но не работает для гигантской компании, которая уделяет этим проблемам первоочередное внимание с почти неограниченными ресурсами.

Поэтому мы с нетерпением ждем выхода Bento! Это бесплатный и продуманный набор инструментов для простого внедрения линтеров и анализа программ в кодовую базу. Он включает в себя написанный нами анализ и упаковывает фантастические инструменты, созданные сообществом, и все они работают в автономном режиме (код никогда не отправляется с вашего компьютера). В течение следующих нескольких месяцев мы выпустим больше новых проверок и включим существующие инструменты; Подписаться на обновления.

Некоторые члены нашей команды написали ранние версии этих инструментов в таких местах, как Facebook. r2c начал с создания инфраструктуры, упрощающей запуск инструментов статического анализа в массовом масштабе (см. нашу статью, опубликованную совместно на USENIX), но нашей целью всегда было извлечь уроки из масштабного анализа для непосредственной пользы отдельным разработчикам: Люди, помогающие небольшим командам писать системы регистрации избирателей для своего города, некоммерческие организации, которые обслуживают сообщества, нацеленные мощными враждебными субъектами, стартапы, которые обрабатывают конфиденциальные данные о других людях, или разработчики, которые просто хотят автоматизировать проверку кода.

Как я могу получить Bento сейчас?

Bento находится на стадии альфа, но вы можете попробовать его прямо сейчас: pip3 install bento-cli

В Bento ушло много любви со стороны нашей маленькой команды. Пожалуйста, попробуйте его в своих проектах Python или JavaScript и отправьте нам отзыв!

Но разве это просто прославленный линтер?

Ну да, но на самом деле нет; В настоящее время Bento представляет собой объединение тщательно отобранных линтов на основе AST, в том числе новых, написанных нами и настроенных на поиск важных ошибок. Однако наша дорожная карта уводит нас далеко за пределы линтинга на основе AST: поиск SQL-инъекций с помощью анализа taint, обнаружение опасных обновлений зависимостей и т. Д.

Линтеры хорошо поработали над достижением разработчиков и улучшением согласованности кода, особенно стиля. Но мы хотим выявить проблемы и глубокие проверки и избежать споров о пробелах и табуляциях при проверке кода. Bento поставляется с конфигурациями, настроенными на реальные данные и ориентированными на правильность и безопасность. Они основаны на использовании нашей платформы для анализа множества репозиториев с открытым исходным кодом и определения того, какие проверки включают и отключают разработчики (Три вещи, которые ваш Линтер не должен вам сообщать). Мы считаем, что вам следует забыть о стиле и использовать детерминированный модуль форматирования с нулевой конфигурацией (Black для Python или Prettier для JavaScript).

В отличие от других инструментов, которые пытаются измерить качество кода или объединить вывод линтера, у нас есть скин в игре анализа; мы уже вносим некоторые изменения в включенные нами инструменты. Мы уже сотрудничаем с несколькими авторами линтеров и хотели бы предложить бесплатные вычислительные ресурсы на нашей платформе для измерения качества проверки всем, кто может быть заинтересован ([email protected]).

Вот что будет дальше

В ближайшее время мы сосредоточимся на написании специальных инструментов анализа для поиска проблем с безопасностью и других проблем для пользователей веб-фреймворка Flask. Если вы или кто-то из ваших знакомых использует Flask и у вас есть идеи о том, что мы можем обнаружить, напишите нам или сообщите о проблеме!

Основные ценности Bento

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

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

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

Эта философия также применима к настройке: Bento автоматически настраивается примерно за 30 секунд, его легко установить в контейнер Docker, и он даже может автоматически установить себя как обработчик предварительной фиксации.

Постепенно становитесь лучше Bento автоматически адаптируется к вашему проекту, включая проверки, соответствующие вашему языку, структуре и зависимостям. Со временем и на основе отзывов сообщества мы будем писать и отправлять новые чеки, которые вы сможете использовать автоматически. И нам нужны ваши отзывы!