Sometimes unused class or function manages to slip into code base. Static code checkers like ruff, flake8 does not have rules for detecting such globally unused code.
I tried using vulture, but it has too many false positives to have it as part of CI/CD pipeline.
I have tried to implement my own, more reliable check for global deadcode detection.
Please let me know what you think about it.
This is great! I really appreciate that it returns a sensible exit code to the shell so that it can potentially fail a build. I also like the ability to maintain a list of excluded names in
pyrpoject.toml
so that you don’t always have to sort through false positives.Would love to see some more output options, like maybe
--quiet
that simply passes/fails and returns the exit code with no output or--count
that either just displays a count or includes a count in the regular output. I guess I could always pipe the output towc -l
instead of having--count
.I’ll see if I can’t get this integrated in our CI system at work this next week.
Thank you for your feedback! Its exactly what I was looking for 👍
I have already added
--count
,--quiet
options and regexp pattern support for--ignore-names
option. Let me know if anything else pops into your mind 😃Wow, nice. Thank you!
Just coming back around on the count thing, in order to use
wc -l
, you need to ensure that stderr is piped too. Like:deadcode . --exclude=*/tests,conftest.py --ignore-names-in-files=core/settings.py 2>&1 | wc -l
I ran this against a ~8 month old Django project and it turned up 11 unused names, of which 5 were expected and can be whitelisted. Nice!
Would also be nice if I could use some sort of pattern in the
--ignore-names
option. Apologies if that’s already there and I missed it.Great idea! I will add this feature shortly :)