16 essential tools that can be run as wrappers for pre-commit, primarily targeting Python and Shell. Gemini can make mistakes, so double-check it
- 主要语言
- Java
- 星标
- 3.1k
- 派生
- 1.4k
- 平均合并
- 6 天 19 小时
- 30 天内合并 PR
- 32
描述
To enhance code quality, consistency, and catch common errors early in the development cycle, integrating pre-commit hooks into your workflow is incredibly effective. For projects that heavily utilize Python and Shell scripting, like many infrastructure or automation platforms, leveraging the right tools as `pre-commit` wrappers can significantly streamline development.
Here are the first 16 essential tools that can be run as wrappers for `pre-commit`, primarily targeting **Python** and **Shell** scripting:
---
### Python Specific Hooks
#### Formatters
- [ ] 1. **Black**: This uncompromising Python code formatter ensures your code adheres to a consistent style, making it highly readable and uniform across your codebase.
- [ ] 2. **Ruff (Formatter)**: An exceptionally fast Rust-powered formatter that's 100% compatible with Black. It's a fantastic choice for quickly standardizing your Python code's appearance.
- [ ] 3. **isort**: Automatically sorts your Python imports alphabetically and groups them into logical sections, cleaning up your import statements.
- [ ] 4. **autoflake**: A utility that intelligently removes unused imports and unused variables from your Python code, based on reports from Pyflakes.
- [ ] 5. **docformatter**: Formats Python docstrings to conform to PEP 257, ensuring consistent and readable documentation within your code.
#### Linters & Static Analysis
- [x] 6. **Flake8**: A versatile wrapper that combines PyFlakes (for basic syntax errors), pycodestyle (for PEP 8 compliance), and McCabe complexity checker (for code complexity).
- [ ] 7. **Ruff (Linter)**: A blazing-fast Python linter written in Rust. It can replace a multitude of other linters like Flake8, isort, pydocstyle, pyupgrade, and autoflake, offering significant speed advantages.
- [ ] 8. **Mypy**: A static type checker for Python. It helps catch type-related errors before runtime, improving code robustness and maintainability.
- [ ] 9. **Pylint**: A highly customizable and comprehensive Python linter that checks for errors, enforces coding standards, and identifies potential code smells.
- [ ] 10. **Bandit**: Focuses on security, designed to find common security issues in your Python code, helping to prevent vulnerabilities.
- [ ] 11. **Pyupgrade**: Automatically upgrades Python syntax to newer versions, such as converting older string formatting to f-strings or adding modern type hints.
- [ ] 12. **debug-statements**: Catches accidental `print()` statements, `pdb.set_trace()` calls, or `breakpoint()` calls that might be left in production code.
- [ ] 13. **check-ast**: Performs a simple check to ensure that your Python files can be parsed as valid Python code, catching basic syntax errors.
---
### Shell Script Specific Hooks
- [ ] 14. **ShellCheck**: A powerful static analysis tool for shell scripts (Bash, sh, ksh). It catches common syntax errors, logical flaws, and stylistic issues, making your scripts more reliable.
- [ ] 15. **bashate**: A dedicated code style enforcement tool specifically for Bash programs, commonly used in large-scale projects to maintain consistent scripting practices.
- [ ] 16. **shfmt**: An opinionated formatter for shell scripts that automatically formats your scripts according to a consistent style, improving readability.
贡献指南
调研方向
首先检查仓库现有的 pre-commit 配置以及当前已勾选的 Flake8 项。评估剩余的 Python 和 Shell 工具作为 pre-commit wrapper 的适用性,然后更新配置和检查清单,使所选 hook 得以集成并可用。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python, shell
- 领域
- tooling
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100