Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/asottile/dead
dead simple python dead code detection
https://github.com/asottile/dead
Last synced: 22 days ago
JSON representation
dead simple python dead code detection
- Host: GitHub
- URL: https://github.com/asottile/dead
- Owner: asottile
- License: mit
- Created: 2019-01-08T04:16:14.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2024-04-30T00:53:47.000Z (7 months ago)
- Last Synced: 2024-05-22T14:32:58.215Z (6 months ago)
- Language: Python
- Size: 214 KB
- Stars: 318
- Watchers: 4
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-python-ast - dead
README
[![build status](https://github.com/asottile/dead/actions/workflows/main.yml/badge.svg)](https://github.com/asottile/dead/actions/workflows/main.yml)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/asottile/dead/main.svg)](https://results.pre-commit.ci/latest/github/asottile/dead/main)dead
====dead simple python dead code detection
## installation
```bash
pip install dead
```## cli
Consult the help for the latest usage:
```console
$ dead --help
usage: dead [-h] [--files FILES] [--exclude EXCLUDE] [--tests TESTS]optional arguments:
-h, --help show this help message and exit
--files FILES regex for file inclusion, default: ''
--exclude EXCLUDE regex for file exclusion, default '^$'
--tests TESTS regex to mark files as tests, default
'(^|/)(tests?|testing)/'
```run the `dead` utility from the root of a git repository.
## as a pre-commit hook
See [pre-commit](https://github.com/pre-commit/pre-commit) for instructions
Sample `.pre-commit-config.yaml`:
```yaml
- repo: https://github.com/asottile/dead
rev: v1.5.2
hooks:
- id: dead
```### how it works
1. find all files in a repository using `git ls-files` and filtering:
- only include files matched by the `--files` regex
- exclude files matched by the `--exclude` regex
- only include files identified as `python` by
[`identify`](https://github.com/chriskuehl/identify)
- classify test files by the `--tests` regex
1. ast parse each file
- search for definitions and references
1. report things which do not have references### false positives
I wrote this in ~15 minutes on an airplane, it's far from perfect but often
finds things. Here's a few things it's not good at:- functions which implement an interface are often marked as unused
- metaclass magic is often marked as unused (enums, model classes, etc.)### suppressing `dead`
The `# dead: disable` comment will tell `dead` to ignore
any line which has reportedly dead code.### is this project dead?
_maybe._