New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

コーディング規約チェックをCIで自動実行する #1

Merged
merged 11 commits into from Dec 4, 2016
View
@@ -0,0 +1,133 @@
env:
browser: true
es6: true
node: true
jquery: true
parserOptions:
sourceType: module
# ここでチェックマークのついているルールが有効になる
# http://eslint.org/docs/rules/
extends: 'eslint:recommended'
rules:
# グローバル変数は修正の影響範囲が大きいためwarnに
no-undef:
- warn
# 自動修正が容易なStylistic Issuesは多めに入れる
# http://eslint.org/docs/rules/#stylistic-issues
# 配列の括弧内にスペースを入れない NG: [ x, y ]
array-bracket-spacing:
- error
- never
# ブロックの括弧内にスペースを入れる NG: x() {return true;}
block-spacing:
- error
- always
# ブロックの始まり{は同じ行に置くスタイル NG: if (foo)\n{
brace-style:
- error
- 1tbs
- allowSingleLine: true
# 配列などの最後のコンマは複数行の場合のみ許可 NG: [x, y,]
comma-dangle:
- error
- only-multiline
# コンマの前はスペース入れない、後は入れる NG: [1,2]
comma-spacing:
- error
- before: false
after: true
# コンマで改行する場合、行の最後に入れる
comma-style:
- error
- last
# プロパティアクセスの括弧内はスペースを入れない NG: obj[ foo ]
computed-property-spacing:
- error
- never
# ファイルの末尾は改行で終わらせる
eol-last:
- error
- always
# 関数呼び出しの括弧との間にはスペースを入れない NG: alert ('Hello')
func-call-spacing:
- error
- never
# インデントはスペース4つ
indent:
- error
- 4
# オブジェクトのコロンの前はスペース入れない、後ろは入れる NG: var obj = { 'foo' : 42 };
key-spacing:
- error
- beforeColon: false
afterColon: true
mode: strict
# 予約語の前後にスペースを入れる NG: if(foo) {...} else{...
keyword-spacing:
- error
- before: true
after: true
# 改行コードはLF
linebreak-style:
- error
- unix
# ブロックコメントの前に改行を入れる
lines-around-comment:
- error
- beforeBlockComment: true
# 'use strict'; などのディレクティブの後には改行を入れる
lines-around-directive:
- error
- always
# elseブロックの中にifを置かない、else if (...とする
no-lonely-if:
- error
# 連続した改行は2つまで
no-multiple-empty-lines:
- error
- max: 2
# 行末にスペースを入れない
no-trailing-spaces:
- error
- skipBlankLines: false
# プロパティアクセスにスペースを入れない NG: foo [bar]; foo .bar
no-whitespace-before-property:
- error
# ブロックに空行を入れない
padded-blocks:
- error
- never
# 文字列はシングルクォート
quotes:
- error
- single
# セミコロンの前にスペース入れない、後に入れる NG: var c = "d";var e = "f";
semi-spacing:
- error
- before: false
after: true
# セミコロンを常に入れる
semi:
- error
- always
# ブロック始まりにスペースを入れる NG: if (a){
space-before-blocks:
- error
- always
# 関数名と()の間にスペースを入れない NG: function foo () {
space-before-function-paren:
- error
- never
# ()の中にスペースを入れない NG: foo( 'bar');
space-in-parens:
- error
- never
# 単項演算子は文字ならスペース入れる、記号は入れない NG: typeof!foo; foo --;
space-unary-ops:
- error
- words: true
nonwords: false
# ファイルにBOMは入れない
unicode-bom:
- error
- never
View
@@ -5,3 +5,5 @@
Homestead.json
Homestead.yaml
.env
npm-debug.log
.php_cs.cache
View
14 .php_cs
@@ -0,0 +1,14 @@
<?php
return PhpCsFixer\Config::create()
->setRiskyAllowed(true)
->setRules(array(
'@PSR2' => true, // @PSR2ルールを全て適用
'blank_line_after_opening_tag' => true, // PHP開始タグ(<?php)の後に改行を入れる
'function_typehint_space' => true, // 関数の仮引数のカンマ前はスペースで開ける
'no_extra_consecutive_blank_lines' => true, // 不要な空行は削除する
'single_quote' => true, // 変数展開の無い単純文字列はシングルクォートで統一
'binary_operator_spaces' => true, // 四則演算の演算子前後はスペースで開ける
'ereg_to_preg' => true, // deprecatedなereg関数をpregに置き換える
'concat_space' => array('spacing' => 'one') // 文字列結合時はピリオドの前後をスペースで開ける
));
View
@@ -0,0 +1,19 @@
language: php
php:
- '7.0'
env:
- APP_KEY=base64:vZDKdrdkVtd16nshCKXbt6lg2832Lo7O11phC29hx8Y=
before_script:
- nvm install 6.9 && nvm alias default 6.9
- npm install
- composer install
script:
- bin/check-coding-rule
- phpunit
notifications:
email: false
View
@@ -0,0 +1,30 @@
#!/bin/bash
function diff-filter-ext() {
git diff --name-only --diff-filter=ACM origin/master...HEAD | grep "\.$1$"
}
lint_langs=()
options=()
for arg in "$@"
do
case "$arg" in
# --で始まっていればオプションとみなし、それ以外はlintする言語指定とみなす
--* ) options+=( "$arg" ) ;;
* ) lint_langs+=( "$arg" ) ;;
esac
done
# 言語指定がなければ全言語に対してlintをかける
if [ ${#lint_langs[@]} = 0 ]; then
lint_langs=(php js)
fi
status=0
for lang in ${lint_langs[@]}
do
diff-filter-ext $lang | xargs -t -n1 -I'FILE' bin/lint-$lang FILE ${options[@]}
if [ $? != 0 ]; then status=1; fi
done
if [ $status != 0 ]; then exit 1; fi
View
@@ -0,0 +1,11 @@
#!/bin/bash
file=$1
opt=$2
if [ "$opt" = "--fix" ]; then
# --silentはeslintではなくnpmのオプション(npm側のログ表示を抑える)
npm run --silent lint:js:fix $file
else
npm run --silent lint:js $file
fi
View
@@ -0,0 +1,10 @@
#!/bin/bash
file=$1
opt=$2
if [ "$opt" = "--fix" ]; then
vendor/bin/php-cs-fixer fix $file --diff --verbose --config .php_cs
else
vendor/bin/php-cs-fixer fix $file --diff --verbose --dry-run --config .php_cs
fi
View
@@ -13,7 +13,8 @@
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.0",
"symfony/css-selector": "3.1.*",
"symfony/dom-crawler": "3.1.*"
"symfony/dom-crawler": "3.1.*",
"friendsofphp/php-cs-fixer": "^2.0"
},
"autoload": {
"classmap": [
Oops, something went wrong.
ProTip! Use n and p to navigate between commits in a pull request.