Да, в несколько потоков вызвать линтер не получится. Фреймворк golang.org/x/tools/go/analysis, на котором построен линтер, запускает анализатор один раз на весь пакет. То есть pass.Files содержит сразу все файлы, и они обрабатываются последовательно в рамках одного анализа. Конечно, можно было бы распараллелить обработку вручную, но тогда пришлось бы синхронизировать доступ к общим структурам и усложнять архитектуру. Пока в этом просто нет смысла — проверка порядка функций достаточно быстрая и больше локальна.
Здесь использовал _ := как синтаксический сахар, чтобы потом на этом примере запустить линтер и он не упал, так как такая программа, где не используются переменные, просто не скомпилируется.
Конечно, в реальном проекте никто так делать не будет.
При условии, что не разворачиваешь через них кафку)))
Да, в несколько потоков вызвать линтер не получится. Фреймворк
golang.org/x/tools/go/analysis
, на котором построен линтер, запускает анализатор один раз на весь пакет. То естьpass.Files
содержит сразу все файлы, и они обрабатываются последовательно в рамках одного анализа. Конечно, можно было бы распараллелить обработку вручную, но тогда пришлось бы синхронизировать доступ к общим структурам и усложнять архитектуру. Пока в этом просто нет смысла — проверка порядка функций достаточно быстрая и больше локальна.Зато поймут как чище писать :)
Здесь использовал
_ :=
как синтаксический сахар, чтобы потом на этом примере запустить линтер и он не упал, так как такая программа, где не используются переменные, просто не скомпилируется.Конечно, в реальном проекте никто так делать не будет.