2015-08-29 13 views
8

Dieser Überblick zeigt, wie Java-Code mit dem Eclipse-Formatierer beim Pre-Commit automatisch formatiert wird.git pre-commit-Hook-Formatcode - Intellij/Android Studio

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

Code:

#!/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---------------------------------------------------------------" 

Ich möchte dies erreichen mit IntelliJ und Android Studio. Wie würde das Skript dann aussehen?

Auch ich denke, es wäre am besten, nur den Formatierer auf geänderten Dateien laufen zu lassen. Vielleicht ist das nützlich:

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

ACM steht für Hinzugefügt, kopiert, geändert. Quelle: http://git-scm.com/docs/git-diff

Bitte Kommentar, wenn etwas unklar ist.

aktualisieren

Mein Setup ist Microsoft Windows 10, und ich möchte das Kommandozeilen-Tool mingw32 (Git Bash) verwenden. Git Version ist 1.9.5 msysgit.1

+0

Haben Sie zufällig eine Lösung gefunden? – Bhargav

+0

Nein, habe ich nicht, aber ich bin immer noch an diesem Thema interessiert! – BenjaminButton

Antwort

3

IDEA hat dies in den normalen Commit-Dialog eingebaut. Überprüfen Sie einfach den "Reformat Code" und alles wird automatisch passieren.

Wenn Sie den Reformatierteil von IDEA von der Befehlszeile aus ausführen wollen, glaube ich nicht, dass es möglich ist. Der einzige Gedanke, den ich gefunden habe, ist, dass Code-Inspektionen durchgeführt werden können.

+0

Vielen Dank für Ihre Antwort. Ich habe meine Frage aktualisiert. Ich bin auf Windows und alles, was git betrifft, passiert in Git Bash. Ich habe nie die GUI von Android Studio zum Commit verwendet und wusste daher nicht, die Option zum Formatieren zu aktualisieren. Da diese Option existiert, bin ich mir sicher, dass es eine Möglichkeit gibt, dies über die Befehlszeile auszuführen. Ich lade den Android Studio-Quellcode herunter und blättere herum. Wenn ich etwas Nützliches finde, werde ich einen anderen Kommentar hinterlassen. Quelle für Android Studio kann hier gefunden werden: http://source.android.com/source/downloading.html – BenjaminButton

2

Sie können das in IntelliJ seit Version 2016.3 verfügbare IntelliJ command-line source code formatter verwenden. Zum Beispiel (für Git Bash):

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

Obwohl Android Studio auf IntelliJ basiert, scheint es nicht, dies zu unterstützen, wenn die IDE geöffnet ist, siehe Kommentar unten.

Ein fortgeschritteneres Pre-Commit-Hook-Beispiel ist im git-hooks-code-autoformat project in GitHub verfügbar.

+1

Es unterstützt es, aber aus irgendeinem Grund funktioniert es nicht, wenn IDE bereits geöffnet ist – scana

Verwandte Themen