Help us understand the problem. What is going on with this article?

Gitでソースコードを自動でフォーマットする などなど

More than 1 year has passed since last update.

目指すは完全自動化

gitのcommitでフォーマット自動整形とプログラムチェックを行う

.git/hooks/pre-commitファイルを作成する。

#!/bin/sh
if git rev-parse --verify HEAD >/dev/null 2>&1
then
    against=HEAD
else
    # Initial commit: diff against an empty tree object
    against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi

# Redirect output to stderr.
exec 1>&2
IS_ERROR=0

# コミットされるファイルのうち、phpのみ対象とする。
for FILE in `git diff-index --name-status $against -- | grep -E '^[AUM].*\.php$'| cut -c3-`; do
        # シンタックスのチェック
        if php -l $FILE; then

                # PSR準拠でコードを書き換える。
                php-cs-fixer fix $FILE --rules=@PSR2
                git add $FILE

                # PHPMDで未使用変数などのチェックをする。
                if ! phpmd $FILE text unusedcode,codesize,naming,controversial; then
                        IS_ERROR=1
                fi
        else
                IS_ERROR=1
        fi

done
exit $IS_ERROR

git commit時にチェックがかかる。
※途中だけどどうしてもチェックインしたい場合は--no-verifyオプションをつける
git commit -m "commit message" --no-verify

php-cs-fixerをインストールする。

windowsでgitコミット時にフォーマット自動整形を行う。

1.インストールする

composer global require friendsofphp/php-cs-fixer

2.パスを設定する
C:\Users{ユーザ名}\AppData\Roaming\Composer\vendor\bin 配下にパスを設定する。

phpmdをインストールする

1.インストールする
使用されていない変数やメソッドや、メソッド名(キャメルケース)などをチェックする。
コードを綺麗にするツール。

composer global require phpmd/phpmd=*

改行コードは LFに統一する

git config --global core.autocrlf input

inputを設定すると、commitはCRLFをLFに変換し、取得時は変換しない(LFのまま)となる。
globalに設定する。

git config --global --list

configを確認できる。
gitは3つのconfigを設定できる。
- system
- global
- local

インデントはタブ4つにする

リモートリポジトリはタブ4つに統一される。

1.attributesを作成し、対象ファイルを定義する。

.git/infoattributesを作成する。

*.js   filter=tabspace
*.html filter=tabspace
*.sql  filter=tabspace

対象とするファイルを列挙する。

2.commit時に変換するよう設定する。

git config --global filter.tabspace.smudge "unexpand --tabs=4 --first-only"
git config --global filter.tabspace.clean "expand --tabs=4"

コミットメッセージにissue noが書かれているかチェックする

コミットメッセージにissue noが書かれているかどうかチェックする。
issueがない場合は「no issue」と書く。

.git/hooks/commit-msgを作成する。

#!/bin/sh

# Redirect output to stderr.
exec 1>&2
IS_ERROR=0

# メッセージを取得する。
msg=`cat $1`

if [[ $msg =~ ^#|^"no issue" ]] ;
then
  :
else
  echo "コメントはissueNo(#12)かno issue を先頭に記入すること"
  IS_ERROR=1
fi

exit $IS_ERROR;
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした