sidcore-dev/unused-imports-cli

GitHub: sidcore-dev/unused-imports-cli

一个轻量级、无依赖的命令行工具,利用 Python ast 模块扫描文件并报告未被使用的导入语句。

Stars: 0 | Forks: 0

# unused-imports-cli [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/sidcore-dev/unused-imports-cli/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/sidcore-dev/unused-imports-cli)](https://github.com/sidcore-dev/unused-imports-cli/releases) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 一个小巧、无依赖的命令行工具,它使用 `ast` 模块扫描 Python 文件,并报告那些已绑定但在文件中其他任何地方都未被引用的导入。 ## 为什么需要 随着代码的演进,未使用的导入会悄无声息地堆积起来 —— 重构删除了某些东西的最后一次使用,而 `import` 行却被遗留下来。它们虽然无害但很碍眼,而且仅仅为了捕获这一个问题去使用大多数完整的 linter 显得过于笨重。`unused-imports-cli` 只做一件事:将它指向文件或目录,它就会准确地告诉你哪些导入没有发挥实际作用。 ## 安装 ``` pip install . ``` 这会在你的 PATH 上安装一个 `unused-imports-cli` 命令。 ## 用法 ``` unused-imports-cli src/ ``` 示例输出: ``` src/app/utils.py:3: unused import 'json' src/app/utils.py:7: unused import 'os.path as osp' src/app/models.py:1: unused import 'typing.Optional' ``` 接受任何单个文件和目录的组合;目录会递归搜索 `.py` 文件(跳过 `.git`、`__pycache__`、`.venv`、`venv`、`.tox`、`build`、`dist` 和 `.eggs`)。 ``` unused-imports-cli app.py lib/ tests/test_app.py ``` ### 检测工作原理 - 处理 `import x`、`import x as y`、`from x import y` 和 `from x import y as z`(包括像 `from . import y` 这样的相对导入)。 - 如果一个导入的绑定名称出现在文件中的其他任何地方 —— 包括函数、类、装饰器和类型注解内部 —— 或者如果它是通过静态 `__all__ = [...]` 列表重新导出的,则该导入将被视为“已使用”。 - 检测是基于文件作用域的,而不是函数作用域:即使某个导入与其导入位置无关,只要它在文件中的其他地方被使用,就不会被标记。 - `from x import *` 会被跳过而不是进行猜测,因为无法知道它引入了哪些名称。 - 仅在字符串类型提示(例如 `-> "Foo"`)中引用的名称不会被检测为已使用 —— 这是一个已知的限制。 ### 退出代码 - `0` — 未发现未使用的导入 - `1` — 发现一个或多个未使用的导入 - `2` — 无法读取文件或解析失败 ``` unused-imports-cli src/ || echo "found unused imports!" ``` ## 开发 ``` pip install -e . python -m unittest discover -s tests -v ``` ## 许可证 保留所有权利。本代码仅公开供查看和参考 —— 未授予使用、复制、修改或重新分发它的许可。详情请参阅 [LICENSE](LICENSE)。
标签:Apache Flink, Python, 云安全监控, 代码规范检查, 文档结构分析, 无后门, 逆向工具, 静态分析