código de formatting gancho precompilation git – Intellij / Android Studio

Esta idea muestra cómo auto-formatear el código Java usando el formateador Eclipse en pre-commit.

Fuente: https://gist.github.com/ktoso/708972

Código:

#!/bin/sh # # This hook will run the eclipse code formatter before any commit # to make the source look as it's supposed to look like in the repo. ECLIPSE_HOME=$HOME/eclipse STYLE_FILE=$HOME/org.eclipse.jdt.core.prefs echo "Running pre-commit hook: run-eclipse-formatter---------------------" echo "Will run eclipse formatter, using: $STYLE_FILE" echo "Listing folders to run formatter on… " code_dirs=`find . -maxdepth 3 | grep 'src/'` for dir in $code_dirs; do echo $dir; done; echo "Launching eclipse code formatter… " exec $ECLIPSE_HOME/eclipse \ -nosplash \ -application org.eclipse.jdt.core.JavaCodeFormatter \ -verbose \ -config $STYLE_FILE \ $code_dirs echo "done---------------------------------------------------------------" 

Me gustaría lograr esto con IntelliJ y Android Studio. ¿Cómo se vería el guión entonces?

También supongo que lo mejor sería ejecutar el formateador en los files modificados. Quizás esto sea útil:

 changedJavaFiles=$(git diff --cached --name-only --diff-filter=ACM | grep '.java$') 

ACM significa Añadido, Copiado, Modificado. Fuente: http://git-scm.com/docs/git-diff

Por favor comente si algo no está claro.

Actualizar

Mi configuration es Windows 10 y me gustaría usar la herramienta de command-line MINGW32 (Git Bash). La versión de Git es 1.9.5 msysgit.1

IDEA tiene esto integrado en el dialog de confirmación normal. Simplemente marque el "código de formateo" y todo sucederá automáticamente.

Si desea ejecutar la parte de reformate de IDEA desde la command-line, no creo que sea posible. Lo único que creo que puedo ejecutar al air libre son las inspecciones de código.

Puede utilizar el formateador de código fuente IntelliJ de línea de command disponible en IntelliJ desde la versión 2016.3. Por ejemplo (para Git Bash):

 CHANGED_JAVA_SRC_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '.java$') $INTELLIJ_DIR/bin/format $CHANGED_JAVA_SRC_FILES 

Aunque Android Studio se basa en IntelliJ, parece que no es compatible cuando el IDE está abierto, vea el comentario a continuación.

En el proyecto git-hooks-code-autoformat en GitHub, se encuentra disponible un ejemplo de anzuelo de precompilation más avanzado.