Как имея одну точку входа в приложение (один файл) найти неиспользуемый код в остальных файлах?

Собственно имеется приложение, которое является вынесенной из монолита логикой, микросервис. Главный файл, кроме тестов, один, все сопутствующее это скопированные директориями модули. Но в них куча лишней и ненужной логики. Я выпиливаю все это вручную, но там очень много всего. Есть ли какой-то метод найти все неиспользуемые главным файлом структуры, методы интерфейсы?


Ответы (2 шт):

Автор решения: Ainar-G

Бесплатный и свободный инструмент статического анализа staticcheck умеет находить неиспользованный код. Пример:

$ nl -b a ./tmp.go 
     1  package main
     2  
     3  func main() {
     4      used()
     5  }
     6  
     7  func used() {}
     8  
     9  func unused() {}
$ staticcheck ./tmp.go 
tmp.go:9:6: func unused is unused (U1000)

Run 'staticcheck -explain <check>' or visit https://staticcheck.io/docs/checks for documentation on checks.
$
→ Ссылка
Автор решения: prospero78su

Рекомендую golangci-lint. Практически все возможные проверки в одном линтере. Кроме того иногда бывает полезен gocritic (но сборка его с полтычка не пройдёт -- читайте инструкцию на сайте).

→ Ссылка