Turning a piece of code into linter rules / Превращаем кусок кода в правила линтера

24 октября, 15:40
Смотреть Трансляцию

Key ideas

In this talk, we will look at how you can write diagnostic tests specific to your project using the dynamic rules mechanism in the NoVerify analyzer.

We will also cover the technical implementation details:

  • DSL for dynamic rules;
  • Current implementation of the AST matcher’s engine;
  • How AST matching can be accelerated;
  • How the rule launcher works, what optimizations we use;
  • Limitations of the AST templates approach;
  • Implementation difficulties associated with Go (we want generics!)

I’ll also go into go-ruleguard to describe the main similarities and differences in the approaches (especially in terms of DSL).


Тезисы

В данном докладе мы рассмотрим, как можно написать специфичные для вашего проекта диагностики, используя механизм динамических правил в анализаторе NoVerify.

Мы также затронем технические детали реализации:

  • DSL для описания динамических правил;
  • Текущая реализация движка AST матчинга;
  • Как можно ускорить AST матчинг;
  • Как устроен запускатель правил, какие оптимизации мы используем;
  • Ограничения подхода AST шаблонов;
  • Сложности реализации, связанные с использованием Go (хотим генерики!)

Я также проведу несколько сравнений с go-ruleguard, чтобы описать основные сходства и различия подходов (особенно в плане DSL).

ВКонтакте

Искандер Шарипов

In the past, I worked on the Go compiler and third-party tooling for it, including static analyzers and refactoring utilities. I am currently planning to port the bunch of Go tools to the PHP ecosystem. Most of my interests are in devtools and programming languages. Currently I work at VKontakte on NoVerify and the kPHP compiler.


В прошлом работал над Go-компилятором и сторонним тулингом для него типа статических анализаторов и утилит для рефакторинга. Сейчас планирую портировать многие инструменты, созданные для Go, в экосистему PHP. Большая часть интересов связана с devtools и языками программирования. На данный момент работаю во ВКонтакте над NoVerify и компилятором kPHP.

In the past, I worked on the Go compiler and third-party tooling for it, including static analyzers and refactoring utilities. I am currently planning to port the bunch of Go tools to the PHP ecosystem. Most of my interests are in devtools and programming languages. Currently I work at VKontakte on NoVerify and the kPHP compiler.


В прошлом работал над Go-компилятором и сторонним тулингом для него типа статических анализаторов и утилит для рефакторинга. Сейчас планирую портировать многие инструменты, созданные для Go, в экосистему PHP. Большая часть интересов связана с devtools и языками программирования. На данный момент работаю во ВКонтакте над NoVerify и компилятором kPHP.

Другие спикеры: