self-use
This document explains how the Lintro project uses Lintro itself for code quality assurance. This demonstrates the tool's capabilities and ensures we maintain high code
Lintro Self-Use: Eating Our Own Dog Food 🐕
This document explains how the Lintro project uses Lintro itself for code quality assurance. This demonstrates the tool’s capabilities and ensures we maintain high code standards.
🎯 Philosophy
We believe in “eating our own dog food” - using Lintro on the Lintro codebase to:
- Validate the tool works correctly in real-world scenarios
- Maintain consistent code quality across the project
- Showcase Lintro’s capabilities to users
- Catch issues early in development
🔧 Tools Used on This Project
Lintro runs multiple specialized tools on different file types:
🐍 Python Files (lintro/, tests/)
- Ruff: Fast Python linter and formatter
- Checks import order, unused variables, code style
- Auto-fixes many issues when possible
- pydoclint: Validates Python docstring completeness
- Ensures all functions have proper documentation
- Checks docstring format consistency
📄 YAML Files (.github/, configs)
- Yamllint: YAML syntax and style validation
- Ensures proper indentation and structure
- Catches common YAML errors
🟨 JavaScript/JSON Files
- Prettier: Code formatting for JS/JSON
- Formats
package.json,renovate.json - Ensures consistent JSON structure
- Formats
🐳 Docker Files (when present)
- Hadolint: Dockerfile best practices
- Security and optimization recommendations
- Multi-stage build validation
🚀 GitHub Actions Integration
1. Quality-First Pipeline
Our CI pipeline runs Lintro before tests to catch quality issues early:
jobs:
quality-check: # 🔍 Lintro runs first
name: 🔍 Code Quality (Lintro)
steps:
- run: uv run lintro check lintro/ tests/ --tools ruff,pydoclint
test-coverage: # 🧪 Tests run after quality passes
needs: quality-check
name: 🧪 Tests & Coverage
2. Multi-Tool Analysis
Different tools for different file types:
# Python code quality
uv run lintro check lintro/ tests/ --tools ruff,pydoclint
# YAML validation
uv run lintro check .github/ --tools yamllint
# JSON formatting
uv run lintro check *.json --tools prettier
3. Auto-fixing
Lintro can automatically fix many issues:
# Auto-fix Python formatting issues
uv run lintro format lintro/ tests/ --tools ruff
📊 Current Quality Status
As of the latest run:
- 31 Python issues detected by Ruff (mostly unused imports)
- Auto-fixable: Most issues can be resolved automatically
- Docstring coverage: Validated by pydoclint
- YAML/JSON: Well-formatted and valid
🔍 Local Development
Run the same checks locally during development:
# Check all Python files
uv run lintro check lintro/ tests/ --tools ruff,pydoclint
# Auto-fix issues
uv run lintro format lintro/ tests/ --tools ruff
# Check specific file types
uv run lintro check .github/ --tools yamllint
uv run lintro check package.json --tools prettier
# List all available tools
uv run lintro list-tools
🎨 Output Formats
Lintro provides multiple output formats for different use cases:
# Grid format (default) - nice tables
uv run lintro check lintro/
# Plain format - CI-friendly
uv run lintro check lintro/ --output-format plain
# JSON format - for tooling integration
uv run lintro check lintro/ --output-format json
# Markdown format - for documentation
uv run lintro check lintro/ --output-format markdown