AC.

Pre-commit: Your First Line of Defence for Clean Code

Original Article: Pre-commit: Your First Line of Defence for Clean Code

Summary

This article explores how you can utilize the pre-commit framework to enforce code quality in your projects. I’ll guide you through the installation and configuration of pre-commit, demonstrating how to set up hooks that proactively prevent common coding mistakes before they are committed to your repository. Furthermore, you will discover how to integrate pre-commit into your CI/CD pipelines for a final quality gate and how to create custom local hooks tailored to your project’s specific needs, ultimately streamlining your development workflow and enhancing code integrity.

Key Concepts

  • Pre-commit Framework: An easy-to-use, multi-language framework for managing Git hooks, ensuring code quality before commits.
  • Installation Methods: Pre-commit can be installed via Homebrew (macOS/Linux), Pip (Cross-Platform), or other methods detailed in the official documentation.
  • Project-Specific Setup: To enable pre-commit for a specific project, you create a .pre-commit-config.yaml file in your repository’s root and run pre-commit install.
  • Global Setup: For a “set it and forget it” approach, you can configure Git’s init.templateDir and use pre-commit init-templatedir to automatically install pre-commit hooks in new repositories.
  • Configuration (.pre-commit-config.yaml): This file defines which checks to run, specifying external hook repositories (repo), their versions (rev), and the specific hooks (id) to use.
  • Running Hooks Manually: Beyond automatic execution on commit, you can run specific hooks (pre-commit run <hook_id>) or all configured hooks across all tracked files (pre-commit run --all-files).
  • Creating Local Hooks: Pre-commit supports defining custom, project-specific scripts as local hooks within your .pre-commit-config.yaml for unique validation needs.
  • CI/CD Integration: Integrating pre-commit into your CI/CD pipeline (e.g., using pre-commit run --all-files or the dedicated GitHub Action pre-commit/action@v3.0.1) acts as a crucial final quality gate, ensuring no code violating standards reaches your main branch.

References

About Me Author

My name is

Alexandre Couedelo

Tech Writer && DevOps ~ Build engineering blogs ~ DevOps, Kubernetes, Security, SRE Read More