Slack открыл исходный код Hakana — инструмента для проверки типов в языке Hack

Slack, платформа для командного общения и совместной работы, открыла исходный код своего внутреннего инструмента Hakana — тайп-чекера, который компания разрабатывала для собственных нужд. Шаг вписывается в общий тренд: всё больше проприетарного софта переходит в open source.

Что такое Hakana

Hakana — это инструмент статического анализа для языка программирования Hack. Он построен на базе Psalm и написан на Rust. Проще говоря, Hakana выполняет проверку типов в коде на Hack, прогоняя его через несколько аналитических методов.

Сейчас Slack использует Hakana для поиска проблем в собственном коде на Hack — компания перешла на этот язык с PHP ещё в 2016 году, сославшись на ряд несоответствий и неудобств последнего.

Возможности инструмента

Среди заявленных возможностей Hakana:

  • обнаружение неиспользуемых функций и приватных методов;
  • выявление неиспользуемых присваиваний внутри замыканий;
  • поиск невозможных и избыточных проверок типов;
  • предупреждения о потенциальных SQL-инъекциях и межсайтовом скриптинге (XSS);
  • предотвращение некорректного использования внутренних API Slack (через плагин-хуки).

В Slack также рассказали о дополнительных сценариях применения инструмента: с его помощью в компании автоматизируют типобезопасные миграции API (тоже через плагин-хуки) и массово удаляют неиспользуемые функции. По словам разработчиков, благодаря Rust такие миграции по всей кодовой базе выполняются достаточно быстро.

Кроме того, Hakana отслеживает, как данные перемещаются между функциями в кодовой базе, и пытается проверить, не попадают ли данные, потенциально контролируемые злоумышленником, туда, где им быть не следует. У инструмента есть и веб-версия, доступная прямо в браузере через WASM — это стало возможным именно благодаря тому, что Hakana написан на Rust.

Почему Slack открыла код

Компания назвала несколько причин такого решения. Во-первых, более широкое сообщество разработчиков может помочь в развитии инструмента, особенно в части анализа безопасности. Во-вторых, это способ «отдать долг» проекту Psalm, на котором построена Hakana. В-третьих, в Slack рассчитывают, что компании с крупными кодовыми базами на PHP смогут форкнуть и доработать Hakana под свои нужды.

Стоит отметить, что язык Hack используют лишь немногие компании — из-за «высокой стоимости переключения»: переход с PHP на Hack требует значительных изменений серверной инфраструктуры.

Подробности о технической реализации Hakana можно найти в анонсирующем блоге Slack.

Источник: It's FOSS.