sideci.ymlを利用した設定方法

Last Updated December 07, 2016

sideci.ymlファイルをレポジトリのルートディレクトリに配置頂くことで、SideCIの自動コードレビュー機能の設定を行うことが出来ます。各機能のオン・オフはSideCIの画面上から行えます。また、各機能はカスタマイズなどはそれぞれの機能に準じます。各機能がサポートしていないカスタマイズ・設定などについてのみ、sideci.ymlファイルで設定することが可能です。

sideci.ymlファイルをサポートしているのは以下の機能です。

  • Rubocop
  • Rails Best Practices

  • PHP_CodeSniffer

  • PHP Mess Detector

  • Flake8

  • Go Meta Linter

  • JSHint

  • ESLint

  • Coffeelint

  • TSLint

sideci.ymlの作成

レポジトリのルートディレクトリにsideci.ymlを作成、編集、保存、gitの管理下に追加して下さい。

$ cd /your/project/dir/path
$ touch sideci.yml
$ git add sideci.yml
$ vi sideci.yml
$ git commit -am "add sideci.yml"

sideci.ymlの書き方

自動コードレビューに関する設定についてはlinterと記載し、その後、各機能名(ツール名)、options、指定したいオプションを指定して下さい。オプションは本ドキュメントに記載のあるドキュメント以外は設定出来ません。記載されていない設定したいオプションがある場合はご連絡下さい。

Example

複数の機能について設定する場合には、以下のように記載して下さい。

linter:
  code_sniffer:
    options:
      standard: PSR2
      dir: app/
  phpmd:
    options:
      rule: codesize,naming,custom_rule.xml
  rubocop:
    options:
      config: 'lint_config/.rubocop.yml'

Rubocop

RubocopではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  rubocop:
    options:
      config: 'lint_config/.rubocop.yml'

Rails Best Practices

rails_best_practices gemの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  rails_best_practices:
    options:
      vendor: true
      spec: true
      test: true
      features: true
      exclude: 'foo,bar'
      only: 'hoge,fuga'

vendorからfeaturesまでは、trueが指定されていればオプションとして付与されます。
sideci.ymlに記載がない場合はオプションに付与されません。

excludeとonlyにはそれぞれのオプションに値が渡されます。また、これらの短縮形のコマンドオプションである-x,-oはサポートしていません。

これらはの実行引数の詳細は下記を御覧ください。
rails_best_practices#Other command-line options

PHP_CodeSniffer

sideci.ymlでは基本コーディング規約の指定と対象ディレクトリの指定が行えます。
一般的なフレームワークでは自動識別しているため、sideci.ymlの記載は不要です。
以下のフレームワークの場合、自動判別し、コーディング規約指定、対象ディレクトリ指定を行っています。

- CakePHP
  + standard: CakePHP
  + dir: app/
- FuelPHP
  + standard: FuelPHP
  + dir: fuel/
- CodeIgniter
  + standard: CodeIgniter
  + dir: application/
- Symfony
  + standard: Symfony
  + dir: app/

standardにて基本コーディング規約の指定が行えます。下記の様に記載して下さい。

linter:
  code_sniffer:
    options:
      standard: PSR2

インストールされている指定可能な基本コーディング規約は以下のとおりです。

$ phpcs -i
The installed coding standards are FuelPHP, Symfony2, CodeIgniter, CakePHP, PEAR, Zend, Squiz, PSR2, PHPCS, PSR1, MySource, WordPress-Docs, WordPress-Extra, WordPress-VIP, WordPress and WordPress-Core

SideCIがPHP_CodeSnifferを実行する際には、phpcsコマンド実行時、カレントディレクトリはレポジトリのトップになっております。

カスタムルールセットは standard: /path/to/MyStandard という形でrulesetのご指定が可能です。

linter: 
  code_sniffer: 
    options: 
      standard: phpcs.xml

dirにてチェック対象ディレクトリの指定、 encodingにてデフォルトの文字エンコーディングが指定できます。

linter: 
  code_sniffer: 
    options: 
      dir: app/
      encoding: utf-8

上記のルールがセットされたexampleレポジトリ、sideci_php_sandbox branch:test/phpcs_custom_ruleset を用意しております。必要があればご参照下さいませ。

PHPMD - PHP Mess Detector

ruleにてruleの選択が可能です。下記の様に記載して下さい。

linter:
  phpmd:
    options:
      rule: codesize

選択可能なruleは以下のとおりです。

cleancode,codesize,controversial,design,naming,unusedcode

また、自身でカスタマイズしたrulesetの指定も可能です。その場合は下記のように指定して下さい。

linter:
  phpmd:
    options:
      rule: ruleset.xml

各ruleの詳細やカスタマイズは下記を御覧ください。
PHPMD - PHP Mess Detector: Documentation#Rules

上記のルールがセットされたexampleレポジトリ、sideci_php_sandbox branch:test/phpmd_custom_rulesを用意しております。必要があればご参照下さいませ。

HAML-Lint

haml-lintの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  haml_lint:
    options:
      include_linter:
        - TagName
        - EmptyScript
        - LineLength
        - MultilinePipe
      exclude_linter:
        - TagName
      config: 'my-haml-lint-conf.yml'
      file: '**/*haml'
      exclude:
        - 'app/views/layouts/application.html.haml'

include_linter, exclude_linter, exclude はArrayを指定します。指定したArrayがカンマ区切りの文字列として引数に渡されます。
config, file は文字列を指定します。

また、fileは--fileオプションになるのではなく、haml-lint実行時の引数として渡されます。
sideci.ymlに記載がない場合はオプションに付与されません。

これらの実行引数の詳細は下記を御覧ください。
HAML-Lint#Command Line Flags

Flake8

Flake8 の解析に使用する python のバージョンをsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  flake8:
    version: 2

versionには 2 or 3 が指定可能です。指定されたそれぞれの最新stableバージョンでの解析が実行されます。
指定されない場合には 3 系での解析が実行されます。

Go Meta Linter

Go Meta Linterの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載ください。

linter:
  gometalinter:
    options:
      exclude: 'REGEXP'
      include: 'REGEXP'
      skip: 'path/to/dir'
      vendor: true
      cyclo-over: 10
      min-confidence: .80
      dupl-threshold: 50
      tests: true
      errors: true
      disable:
        - vet
        - golint
      enable:
        - gofmt
      severity: 'LINTER:SEVERITY'
      disable-all: true
      fast: true

disable, enable にはArrayを指定します。
また、vendor, tests, errors, disable-all にtrueが指定されている場合、対象のオプションが付与されてコマンドが実行されます。
それ以外の項目は、対象のオプションに指定した引数が付与されてコマンドが実行されます。

これらの実行引数の詳細は下記を御覧ください。

gometalinter#details

JSHint

JSHintではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  jshint:
    options:
      config: 'lint_yml/.jshintrc'

ESLint

ESLintの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  eslint:
    options:
      config: 'lint_yml/.eslintrc'
      ext: 'js,jsx,es6'
      ignore-path: .gitignore
      no-ignore: application.js
      ignore-pattern: /src/vendor/*
      global: require,exports:true welcome.js
      dir: 'public/javascripts'

Coffeelint

CoffeelintではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  coffeelint:
    options:
      config: 'lint_yml/coffeelint.json'

TSLint

TSLintではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  tslint:
    options:
      config: 'lint_yml/tslint.json'

sideci.ymlを利用した設定方法

Last Updated December 07, 2016

sideci.ymlファイルをレポジトリのルートディレクトリに配置頂くことで、SideCIの自動コードレビュー機能の設定を行うことが出来ます。各機能のオン・オフはSideCIの画面上から行えます。また、各機能はカスタマイズなどはそれぞれの機能に準じます。各機能がサポートしていないカスタマイズ・設定などについてのみ、sideci.ymlファイルで設定することが可能です。

sideci.ymlファイルをサポートしているのは以下の機能です。

  • Rubocop
  • Rails Best Practices

  • PHP_CodeSniffer

  • PHP Mess Detector

  • Flake8

  • Go Meta Linter

  • JSHint

  • ESLint

  • Coffeelint

  • TSLint

sideci.ymlの作成

レポジトリのルートディレクトリにsideci.ymlを作成、編集、保存、gitの管理下に追加して下さい。

$ cd /your/project/dir/path
$ touch sideci.yml
$ git add sideci.yml
$ vi sideci.yml
$ git commit -am "add sideci.yml"

sideci.ymlの書き方

自動コードレビューに関する設定についてはlinterと記載し、その後、各機能名(ツール名)、options、指定したいオプションを指定して下さい。オプションは本ドキュメントに記載のあるドキュメント以外は設定出来ません。記載されていない設定したいオプションがある場合はご連絡下さい。

Example

複数の機能について設定する場合には、以下のように記載して下さい。

linter:
  code_sniffer:
    options:
      standard: PSR2
      dir: app/
  phpmd:
    options:
      rule: codesize,naming,custom_rule.xml
  rubocop:
    options:
      config: 'lint_config/.rubocop.yml'

Rubocop

RubocopではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  rubocop:
    options:
      config: 'lint_config/.rubocop.yml'

Rails Best Practices

rails_best_practices gemの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  rails_best_practices:
    options:
      vendor: true
      spec: true
      test: true
      features: true
      exclude: 'foo,bar'
      only: 'hoge,fuga'

vendorからfeaturesまでは、trueが指定されていればオプションとして付与されます。
sideci.ymlに記載がない場合はオプションに付与されません。

excludeとonlyにはそれぞれのオプションに値が渡されます。また、これらの短縮形のコマンドオプションである-x,-oはサポートしていません。

これらはの実行引数の詳細は下記を御覧ください。
rails_best_practices#Other command-line options

PHP_CodeSniffer

sideci.ymlでは基本コーディング規約の指定と対象ディレクトリの指定が行えます。
一般的なフレームワークでは自動識別しているため、sideci.ymlの記載は不要です。
以下のフレームワークの場合、自動判別し、コーディング規約指定、対象ディレクトリ指定を行っています。

- CakePHP
  + standard: CakePHP
  + dir: app/
- FuelPHP
  + standard: FuelPHP
  + dir: fuel/
- CodeIgniter
  + standard: CodeIgniter
  + dir: application/
- Symfony
  + standard: Symfony
  + dir: app/

standardにて基本コーディング規約の指定が行えます。下記の様に記載して下さい。

linter:
  code_sniffer:
    options:
      standard: PSR2

インストールされている指定可能な基本コーディング規約は以下のとおりです。

$ phpcs -i
The installed coding standards are FuelPHP, Symfony2, CodeIgniter, CakePHP, PEAR, Zend, Squiz, PSR2, PHPCS, PSR1, MySource, WordPress-Docs, WordPress-Extra, WordPress-VIP, WordPress and WordPress-Core

SideCIがPHP_CodeSnifferを実行する際には、phpcsコマンド実行時、カレントディレクトリはレポジトリのトップになっております。

カスタムルールセットは standard: /path/to/MyStandard という形でrulesetのご指定が可能です。

linter: 
  code_sniffer: 
    options: 
      standard: phpcs.xml

dirにてチェック対象ディレクトリの指定、 encodingにてデフォルトの文字エンコーディングが指定できます。

linter: 
  code_sniffer: 
    options: 
      dir: app/
      encoding: utf-8

上記のルールがセットされたexampleレポジトリ、sideci_php_sandbox branch:test/phpcs_custom_ruleset を用意しております。必要があればご参照下さいませ。

PHPMD - PHP Mess Detector

ruleにてruleの選択が可能です。下記の様に記載して下さい。

linter:
  phpmd:
    options:
      rule: codesize

選択可能なruleは以下のとおりです。

cleancode,codesize,controversial,design,naming,unusedcode

また、自身でカスタマイズしたrulesetの指定も可能です。その場合は下記のように指定して下さい。

linter:
  phpmd:
    options:
      rule: ruleset.xml

各ruleの詳細やカスタマイズは下記を御覧ください。
PHPMD - PHP Mess Detector: Documentation#Rules

上記のルールがセットされたexampleレポジトリ、sideci_php_sandbox branch:test/phpmd_custom_rulesを用意しております。必要があればご参照下さいませ。

HAML-Lint

haml-lintの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  haml_lint:
    options:
      include_linter:
        - TagName
        - EmptyScript
        - LineLength
        - MultilinePipe
      exclude_linter:
        - TagName
      config: 'my-haml-lint-conf.yml'
      file: '**/*haml'
      exclude:
        - 'app/views/layouts/application.html.haml'

include_linter, exclude_linter, exclude はArrayを指定します。指定したArrayがカンマ区切りの文字列として引数に渡されます。
config, file は文字列を指定します。

また、fileは--fileオプションになるのではなく、haml-lint実行時の引数として渡されます。
sideci.ymlに記載がない場合はオプションに付与されません。

これらの実行引数の詳細は下記を御覧ください。
HAML-Lint#Command Line Flags

Flake8

Flake8 の解析に使用する python のバージョンをsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  flake8:
    version: 2

versionには 2 or 3 が指定可能です。指定されたそれぞれの最新stableバージョンでの解析が実行されます。
指定されない場合には 3 系での解析が実行されます。

Go Meta Linter

Go Meta Linterの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載ください。

linter:
  gometalinter:
    options:
      exclude: 'REGEXP'
      include: 'REGEXP'
      skip: 'path/to/dir'
      vendor: true
      cyclo-over: 10
      min-confidence: .80
      dupl-threshold: 50
      tests: true
      errors: true
      disable:
        - vet
        - golint
      enable:
        - gofmt
      severity: 'LINTER:SEVERITY'
      disable-all: true
      fast: true

disable, enable にはArrayを指定します。
また、vendor, tests, errors, disable-all にtrueが指定されている場合、対象のオプションが付与されてコマンドが実行されます。
それ以外の項目は、対象のオプションに指定した引数が付与されてコマンドが実行されます。

これらの実行引数の詳細は下記を御覧ください。

gometalinter#details

JSHint

JSHintではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  jshint:
    options:
      config: 'lint_yml/.jshintrc'

ESLint

ESLintの実行引数として指定可能な内容をsideci.ymlで指定可能です。
以下のようにsideci.ymlに記載下さい。

linter:
  eslint:
    options:
      config: 'lint_yml/.eslintrc'
      ext: 'js,jsx,es6'
      ignore-path: .gitignore
      no-ignore: application.js
      ignore-pattern: /src/vendor/*
      global: require,exports:true welcome.js
      dir: 'public/javascripts'

Coffeelint

CoffeelintではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  coffeelint:
    options:
      config: 'lint_yml/coffeelint.json'

TSLint

TSLintではconfigファイルのPathをsideci.ymlで指定可能です。

linter:
  tslint:
    options:
      config: 'lint_yml/tslint.json'