TGViewer
Cross Join - канал о разработке Cross Join - канал о разработке @crossjoin · 3.83K subscribers
Post #198 2.02K
Пара мыслей про поиск мёртвого кода в Go, в порядке бреда

В Go 1.20 сделали возможность сбилдить приложение с флагом cover


go build -cover



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

Это, конечно, было сделано для хитрых интеграционных тестов, когда приложение запускается целиком в каких-то сценариях (а не через go test), но возможно это можно попробовать использовать и по-другому:

запустить прям на проде, подержать какое-то время и посмотреть, какие участки кода в реальности никогда не запускаются.

Это бывает нужно, когда в проекте есть старый легаси-код, и никто уже не знает, что там и зачем. Часто часть этого кода - просто старое недовыпиленное говно. И наоборот - кажется, что код уже не нужен, а он нет-нет, но иногда работает.

Правда, сбор статистики наверняка вносит некоторое торможение в код, насколько много - хз, я пока что не пробовал (У меня сейчас довольно простые микросервисы, там мало кода, и нет старого непонятного легаси). Так что это точно не всем подойдёт.

Просто как мысль на подумать

Пара деталей:

Запускать надо с переменной окружения GOCOVERDIR

GOCOVERDIR=somedata ./myapp 


После завершения приложения в этой папке появятся бинарники, которые можно сконвертировать в нормальный вид

go tool covdata textfmt -i=somedata -o coverage.txt


и посмотреть, что там, стандартными средствами, например так:

go tool cover -html=coverage.txt


Кстати, если приложение было внезапно принудительно завершено, например из-за паники, то статистика не соберется
  • 👍 21
  • 😱 2
  • 🤮 2
More from @crossjoin
  1. Oct 2, 2026Теперь у нас у всех есть простой способ поддерживать знание иностранного языка. Просто раз…
  2. Oct 2, 2026Вышел NATS Server 2.15.0 Самое важное: • Надёжнее работа JetStream-кластера. Масштабирован…
  3. Sep 29, 2026😱 Отправили свое резюме на 129 вакансий на хх, а в ответ тишина .. Думаете, что дело в ры…
  4. Sep 28, 2026Слышал недавно в каком-то подкасте мысль, что Haskell плохо подходит для вайбкодинга прост…
  5. Sep 26, 2026Антон Жиянов написал мини-книгу по Go-concurrency. Это что-то вроде плотного конспекта с и…
  6. Sep 22, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →