PyWard is a lightweight command-line linter for Python code. It helps developers catch optimization issues (like unused imports and unreachable code) and security vulnerabilities (such as unsafe eval/exec usage and known CVE patterns).
-
Optimization Checks
- Detects unused imports
- Flags unreachable code blocks
-
Security Checks
- Flags usage of
eval()andexec()(e.g., CVE-2025-3248) - Detects vulnerable imports like
python_json_logger(e.g., CVE-2025-27607)
- Flags usage of
-
Flexible CLI
- Run all checks by default
- Use
-o/--optimizeto run only optimization checks - Use
-s/--securityto run only security checks - Use
-v/--verbosefor detailed output, even if no issues are found
Install from PyPI:
pip install pyward-cliEnsure that you have Python 3.7 or newer.
Basic usage (runs both optimization and security checks):
pyward <your_python_file.py>-
-o, --optimize
Run only optimization checks (unused imports, unreachable code). -
-s, --security
Run only security checks (unsafe calls, CVE-based rules). -
-v, --verbose
Show detailed warnings and suggestions, even if no issues are detected.
Run all checks on demo.py:
pyward demo.pyRun only optimization checks:
pyward -o demo.pyRun only security checks:
pyward -s demo.pyRun with verbose mode:
pyward -v demo.pyContributions are welcome! To add new rules or improve existing ones:
- Fork the repository.
- Create a new branch (e.g.,
feature/new-rule). - Implement your changes and add tests if applicable.
- Open a pull request detailing your enhancements.
Please adhere to the project’s coding style and include meaningful commit messages.
This project is licensed under the MIT License. See the LICENSE file for details.
- Inspired by security best practices and popular linters in the Python ecosystem.