Как имея одну точку входа в приложение (один файл) найти неиспользуемый код в остальных файлах?
Собственно имеется приложение, которое является вынесенной из монолита логикой, микросервис. Главный файл, кроме тестов, один, все сопутствующее это скопированные директориями модули. Но в них куча лишней и ненужной логики. Я выпиливаю все это вручную, но там очень много всего. Есть ли какой-то метод найти все неиспользуемые главным файлом структуры, методы интерфейсы?
Ответы (2 шт):
Бесплатный и свободный инструмент статического анализа
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.
$
Рекомендую golangci-lint. Практически все возможные проверки в одном линтере. Кроме того иногда бывает полезен gocritic (но сборка его с полтычка не пройдёт -- читайте инструкцию на сайте).