Cuando trabajas con equipos, ya sea el tamaño que sea, unas personas verán mejor usar un estilo y otras otros.

Lo que no veo cuando trabajamos en Visual Studio, es un NuGet para mantener un estilo, ni siquiera ReSharper y eso que soy cliente de JetBrain desde hace años (pago religiosamente mi licencia allí donde trabaje.

Uno de los NuGet que no estoy nada de acuerdo con meterlo en un proyecto es: StyleCops, máxime cuando ni siquiera ya tiene soporte para Visual Studio 2022.

O por ejemplo usar la extensión de SonarLint. Otra de las grandes herramientas utilizadas, aunque si usas SonarQube o SonarCloud, es muy posible que quieras seguir teniéndola.

Entonces, ¿qué puedo hacer?

Algo tan sencillo como usar los Hooks de Git.

Los Hooks de Git son scripts que se ejecutan automáticamente antes o después de que Git ejecute un comando como Commit o Push.

Los podemos pasar antes o después de la acción, pero yo os voy a recomendar su uso para dos cosas:

  • Revisar el formato.
  • Pasar test

Los siguientes ficheros deben estar en  .git\hooks, o bien podemos crear una carpeta .git-hooks (opción deseable que esté asociada a Git) para no tener que hacer estos pasos a mano. Pero como a veces trabajas con personas que no lo quieren, yo siempre me monto mis pre-commit y pre-push para intentar minimizar problemas que pueden ser automatizados.

E ir a este enlace para bajaros un formato predefinido de formato para tus aplicaciones, ya te podrás poner más tarde a personalizarlo para que cuadre con tu equipo (recuerda hacer una sesión para consenso):

Este fichero debe estar a la altura de la solución, como veis al descargar el ejemplo: https://github.com/jmfloreszazo/GitHookSamplesStyleVS2022

Y como podreis observar si no rompo una regla, al hacer un commit me muestra este mensaje (en esta ocasión desde el interface de GitKraken)

#!/bin/sh
echo "Formatting the .cs files..."

# Valida HoosPath
git config core.hooks

# Format the code
FILES=$(git diff --cached --name-only --diff-filter=ACM "*.cs")
if [ -n "$FILES" ]
then
    dotnet-format ConsoleApp.sln --include $FILES
    echo "$FILES" | xargs git add
fi

if [ $? -ne 0 ]; then
  echo "Error formatting changes...."
  exit 1
fi

echo "Formatting done!"

exit 0

Y hacemos un push, en esta ocasión, compila y pasa los test, puedes modificar el fichero para que salten errores, etc. etc.

#!/bin/sh
echo "Building before push"

dotnet build

echo "Build done!"

echo "Test before push"

dotnet test "./TestProject/TestProject.csproj"

echo "Test done!"

Como podeis observar es realmente sencillo mantener el orden en tu proyecto sin engordar el entorno de trabajo o incluir NuGet innecesarios.

Embajador GitKraken Rectangular