Skip to main content

Git

Goal

Integrate codee with git to reject the commit if critical issues are found in the code.

Prerequisites

Ensure you have:

  • codee installed and accessible from your command line.
  • jq package installed in your system.

Optional tools

  • pre-commit package manager installed in your system.

This is not an actual requirement but a simpler and more robust approach to git hooks.

Configuration

This guide is configured to use the MATMUL Fortran example of the codee-demos repository.

Create a file named .pre-commit-config.yaml:

.pre-commit-config.yaml
repos:
- repo: local
hooks:

- id: codee-analyzer
name: Codee Analyzer
entry: ./scripts/codee-checks.sh
language: system
types: [file]
files: '\.(f|F|f90|F90|f95|F95)$'

It is also necessary to create a script where we will include the checkers that are considered critical for the current project:

mkdir
mkdir -p scripts/

Then, create a codee-checks.sh file:

touch
touch scripts/codee-checks.sh

The content of the script should be something similar to this:

codee-checks.sh
#!/bin/bash

# A collection of check you may consider relevant
CHECKS="PWR072,PWR079,PWR007,PWR008,PWR068,PWR003,PWR069"
COMPILE_COMMANDS="Fortran/MATMUL/compile_commands.json"

ISSUE_COUNT=$(codee checks --check-id "$CHECKS" --verbose -p "$COMPILE_COMMANDS" --json | jq '.Checks | length')

if [ "$ISSUE_COUNT" -gt 0 ]; then
echo "❌ Commit aborted: $ISSUE_COUNT critical issues were found. Review codee_checks_output.json for details."
exit 1
fi

Finally, run pre-commit install in the root of the repository to set up the git hook scripts.

pre-commit installation
pre-commit install

Now the pre-commit hook is installed at .git/hooks/pre-commit and it will run automatically on git commit.

Usage

On every git commit, if any Fortran files have been modified, codee checks will be executed and the commit will be rejected if any critical checkers are triggered.