2015-08-29 58 views
8

Gist này cho thấy cách tự động định dạng mã Java bằng cách sử dụng trình định dạng Eclipse tại tiền cam kết.git pre-commit hook format code - Intellij/Android Studio

Nguồn: 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---------------------------------------------------------------" 

Tôi muốn đạt được điều này với IntelliJ và Android Studio. Kịch bản trông như thế nào?

Ngoài ra tôi đoán sẽ tốt nhất là chỉ chạy trình định dạng trên các tệp đã thay đổi. Có thể điều này hữu ích:

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

ACM là viết tắt của Đã thêm, Đã sao chép, Sửa đổi. Nguồn: http://git-scm.com/docs/git-diff

Vui lòng nhận xét nếu có gì không rõ ràng.

Cập nhật

thiết lập của tôi là Windows 10 và tôi muốn sử dụng công cụ dòng lệnh MINGW32 (Git Bash). Phiên bản Git là 1.9.5 msysgit.1

+0

bạn có tìm thấy giải pháp cho vấn đề này không? – Bhargav

+0

Không, tôi đã không nhưng tôi vẫn quan tâm đến chủ đề này! – BenjaminButton

Trả lời

3

IDEA đã được tích hợp vào hộp thoại cam kết thông thường. Chỉ cần kiểm tra "mã định dạng lại" và tất cả sẽ tự động xảy ra.

Nếu bạn muốn chạy phần định dạng lại của IDEA từ dòng lệnh, tôi không nghĩ là có thể. Chỉ nghĩ rằng tôi đã tìm thấy rằng có thể chạy bên ngoài là kiểm tra mã.

+0

Cảm ơn bạn đã trả lời. Tôi đã cập nhật câu hỏi của mình. Tôi đang ở trên Windows và mọi thứ liên quan đến git xảy ra trong Git Bash. Tôi không bao giờ sử dụng GUI của Android Studio để cam kết và do đó không biết cập nhật tùy chọn để định dạng tất cả. Vì tùy chọn này tồn tại, tôi chắc chắn có một cách để chạy điều này từ dòng lệnh. Tôi sẽ tải xuống mã nguồn Android Studio và tìm hiểu xung quanh. Nếu tôi thấy bất cứ điều gì hữu ích, tôi sẽ để lại một bình luận khác. Nguồn cho Android Studio có thể được tìm thấy tại đây: http://source.android.com/source/downloading.html – BenjaminButton

2

Bạn có thể sử dụng IntelliJ command-line source code formatter có sẵn trong IntelliJ kể từ phiên bản 2016.3. Ví dụ (đối với Git Bash):

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

Mặc dù Android Studio dựa trên IntelliJ, có vẻ như không hỗ trợ điều này khi IDE mở, xem bình luận bên dưới.

Ví dụ móc trước cam kết nâng cao hơn có sẵn trong git-hooks-code-autoformat project in GitHub.

+1

Nó hỗ trợ nó, nhưng vì một số lý do nó không hoạt động khi IDE đã được mở – scana