読者です 読者をやめる 読者になる 読者になる

SideCI Blog

継続的インテグレーションツール(CI)のSideCIが運営しています。コード品質向上や生産性向上など、ソフトウェアエンジニアに役立つCI全般について記事を投稿しています。

解析完了通知がSlack/HipChatで受け取れるようになりました!

Update

こんにちは。今週のアップデート情報です。

解析完了通知がSlack/HipChatで受け取れるようになりました!

f:id:sideci:20161128114111p:plain

今まではプルリクエスト上のコミットステータスでのみ制御をしていましたが、解析完了したタイミングでSlackやHipChatへの通知が設定できるようになりました。 プルリクエスト毎の指摘数や、前回コミットとの指摘数の差分が受け取れます。

設定方法

SideCIの [プロジェクト設定] - [Webhooks] - [Webhook を追加] からSlack or HipChat上でのIncomming WebhookのURLを入力してください。

SlackのWebhookURLは Custom Integrations から、 HipChatはHipChatのトップページメニューのインテグレーションからURLが発行できます。

また、Webhook通知は各リポジトリ毎に設定頂く必要があります。

f:id:sideci:20161128124337p:plain

2016年11月よりトライアルプランを改定致します。

Update

SideCIでは月間ビルド制限付きのトライアルプランを提供して参りましたが、「法人契約想定で検証する際に月間30ビルドでは少なく検証がしづらい」などのご意見を多く頂くこともあり、2016年11月よりトライアルプランの制限を改定する運びとなりました。

トライアルプランの変更点

Publicリポジトリでの解析

現行: 無制限に利用可能 2016年11月以降: 無制限に利用可能(変更なし)

Privateリポジトリでの解析

現行: Organizationごとに月間30ビルドまで利用可能 2016年11月以降: Organizationごとに 登録後14日間が無制限 で利用可能

「Organizationごとに登録後」とは そのOrganizationに対してSideCI上でPrivateリポジトリを初めて登録した日 を指します。

例えば、vexus2さんが A B Organizationに所属していて A のリポジトリを11月1日、 B のリポジトリを 11月3日に有効にした場合、それぞれトライアル終了日は

A => 11月15日

B => 11月17日

となります。トライアル終了後に 自動的に有償プランに切り替わることはありません。

また、既存でPrivateリポジトリでトライアルプランをご利用頂いている方につきましては2016年11月1日を登録日とさせて頂きます。

トライアルプラン以外の有償プランについては変更は御座いません。

プランについてのご質問等ございましたら support@sideci.com までご連絡下さい。

RuboCopを使い始めよう! RuboCop導入に最適な設定、MeowCopをリリースしました!

こんにちは、RuboCop大好きpockeです! 先日RuboCopの設定用のGem、MeowCopをリリースしましたのでお知らせいたします。

RuboCop のデフォルト設定は使いづらい

今回このGemをリリースした背景には、RuboCopのデフォルト設定が扱いづらいことが上げられます。

RuboCopは数多くのルールを提供しています。 そして、そのルールの多くはデフォルトの設定で有効となっています。 これにより、特に何も設定しなくてもRuboCopは多くの項目を検証してくれます。

ですが、裏を返すとRuboCopは自分で設定をしない場合大量のwarningsを出力してしまいます。 このような状況はRuboCopを導入する際の大きな障壁となるでしょう。

何故大量のwarningsが出てしまうのか

では、何故大量のwarningsが出てしまうのでしょうか。 その答えは、RuboCopがRubyコードのスタイルをチェックする、という点にあります。

コーディングスタイルは人、会社、プロジェクトによって様々な物が存在します。 そのため、汎用的なツールであるRuboCopのデフォルト設定だと、各プロジェクトに適合した設定にはなっておらず、結果として大量のwarningsが発生してしまいます。

スタイルの問題を指摘しない、という解決策

この問題を解決するのがMeowCopです。

MeowCopは、コーディングスタイルに関するルールなど、プロジェクトごとに変わってくるルールを無効化します。 また、バグに繋がるようなコードやパフォーマンス上の問題など、スタイルに関するルール以外は有効になっています。 これにより、大量のwarningsに悩まされることなくRuboCopを有効に導入することが可能です。

また、MeowCopを導入後にスタイルに関するルールを有効にしたい場合、.rubocop.yml内で設定を上書きすることが可能です。

インストール方法

以下のコマンドでgemをインストールするか

$ gem install rubocop meowcop

以下のコードをGemfileに書き加えることでインストールが可能です。

gem 'rubocop', require: false
gem 'meowcop', require: false

また、.rubocop.ymlに下記のコードを加える必要があります。 もし.rubocop.ymlが存在しない場合、新たに作成して下さい。

inherit_gem:
  meowcop:
    - config/rubocop.yml

この状態でrubocopコマンドを実行すると、MeowCopの設定が適用された状態で実行されます。

まとめ

MeowCopを使用することで、RuboCopを導入する際にどのプロジェクトでも使えるルールのみから始めることが可能です。
RuboCopを導入したいけど、スタイルガイドに沿った設定ファイルを作るのが大変な場合は試してみてはいかがでしょうか?

また、SideCIでも今すぐご利用いただくことが可能です。 なお、SideCI上でRuboCopを実行する際、.rubocop.ymlが存在しないリポジトリに対してはMeowCopの設定を適用してRuboCopを実行するようになっています。

ESLint実行時にプラグインやコンフィグをnpm installできるようになりました 他

こんにちは。今週のアップデート情報です。

ESLint実行時にプラグインやコンフィグをnpm installできるようになりました

SideCI上でのESLint実行時、.eslintrcの設定ファイル内にpluginsやextendsが指定されている場合にそれらのインストールした上で解析を実行するようになりました。

例えば .eslintrc.json が

{
  "rules": {
     ...
  },
  "plugins": [
    "react",
    "jade",
  ],
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended"
  ]
}

のようなとき、

  • eslint-plugin-react
  • eslint-plugin-jade
  • eslint-config-eslint

がnpm installされeslintの解析が実行されます。

SideCIではeslintrcのファイル形式として以下の形式をサポートしています。

  • .eslintrc.yaml
  • .eslintrc.yml
  • .eslintrc.json
  • .eslintrc (JSON, YAMLどちらでも可/公式ではdeprecated)
  • package.json

package.jsonについては eslintConfig という項目でESLintのコンフィグ項目として設定可能です。 インストールしたいESLintのバージョンや、各種ESLintプラグインのバージョンを指定したい場合は、package.json内でdevDependenciesとして指定することが可能です。

package.jsonについてはこちらの公式ドキュメント をご参照ください。

SideCI経由でPull Requestに付いた指摘を初期化(cleanup)できるようになりました

f:id:sideci:20160912191040p:plain

Pull Request内でのコメントやディスカッションが増えてきたり、開発後期でマージ前で静的解析の瑣末な指摘は表示したくないケースはあるかと思います。 そんなときにSideCI経由で付いた静的解析のコメントを一斉に削除できるようになりました。

SideCIのニュースフィード上内の該当のPRの指摘ページ(Feed)から実行できます。

※コメント削除は一時的な削除なため、同一PR内のブランチに再度PUSHが行われると再度SideCI指摘が付記されます。恒常的にPRへのコメントを無効にしたい場合は SideCIの画面の解析ツール選択から設定が可能です。

ぜひご利用頂ければ幸いです!

SideCI上でESLintの自動修正が行えるようになりました ほか

SideCI Update

こんにちは。今週のアップデート情報です。

SideCI上でESLintの自動修正が行えるようになりました。

ESLint経由で指摘したもののうち、修正可能な指摘を自動修正したPull Requestを生成することができます。 この機能を既存のワークフローに組み込むことによって「Pull Requestに対するESLintの指摘を修正するPull RequestをSideCIから作成し、それをマージする」ことでローカルで修正せずともコード指摘を反映できるようになります。

この自動修正の対象は 該当Pull Request内のコミットで変更があったファイル になります。差分箇所のみではない点をご留意下さい。

設定方法

SideCI上の 解析ツール選択 からESLintを有効にしておきます。また、 GitHub上にコメントを行わない オプションは 外して おきます。

f:id:sideci:20160715105429p:plain

実行方法

1. SideCI上から

SideCIの Pull Requestに対するESLintの指摘 から ESLintの指摘を自動修正する をクリックすると、ESLintの指摘を自動修正するPull Requestが生成されます。

f:id:sideci:20160715112045p:plain

2. GitHubのPull Requestから

GitHubのPull Requestにコメントされるリンクから実行します。

ESLintの指摘が1件以上あるPull Request に対してコメントされる形で修正リンクが付記されます。 Auto Correct by SideCIボタンをクリックすると、Pull Request生成が実行されます。

f:id:sideci:20160715112050p:plain

自動修正されたPull Requestをマージする

自動修正のPull Requestが生成されます。

また、修正元のPull Requestに自動生成されたPull Requestについてのコメントが付与されます。

生成されたPull Requestをレビューの上、マージしてください。

RuboCopの自動修正実行前に差分プレビューが表示されるようになりました

RuboCopでも上記の自動修正が行えますが、SideCI上でPull Request生成前に 自動修正を実行した場合に生成されるPull Requestのコード差分を確認 できるようになりました。

「自動修正でどんな内容のPull Requestが作られるのか」「変なコードに書き換えられないか」などの確認が事前にできるようになるので便利です。

f:id:sideci:20160715112124p:plain

設定方法は特に不要で、実行方法はESLint同様に「RuboCopの指摘を自動修正する」を行うと、実行時にSideCI側で差分プレビューが表示されます。

ぜひご利用頂ければ幸いです!

GitHub Enterpriseをご利用中の皆様、お待たせ致しました。SideCIのGHEへの提供を開始しました

SideCI Update

GitHub Enterpriseをご利用中のチームへのSideCIの提供を開始致します。

SideCIは今まではクラウド版のGitHubにのみしており、Enterprise版については個別お問い合わせとさせて頂いておりました。今後、以下に記載の要件での提供については、すぐにご利用頂けるようになります。

特徴

  • インフラの構築作業やホスティング費用は不要。SideCIのご利用料のみでご利用頂けます
  • SideCIとGitHub Enterprise間の通信は全て暗号化し行われます(HTTPS)
  • オーガニゼーション数、リポジトリ数は無制限にご利用頂けます

その他、セキュリティーポリシーなどは以下に準じます。
https://sideci.com/ja/security

ご利用要件

GitHub Enterprise要件

  • GitHub Enterpriseは外部からアクセス可能なドメイン名を持っている必要があります(github.example.comなど)
  • GitHub Enterpriseのホストに正規のSSL証明書が設定されている必要があります

ネットワーク要件

弊社SideCI側とGitHub Enterpriseとの通信周りでいくつかネットワーク要件があります。
詳しくはお問い合わせください。

ご利用料金

GitHub向けとは料金体系が異なりますので、お問い合わせ下さい。
GitHub向けの料金プランは料金ページ記載の通りです。

申し込みからご利用までの流れ

  1. support@sideci.com までお問い合わせ下さい
  2. ご利用要件や料金等についてご訪問、ご紹介させて頂きます(Skype等リモートでも可能です)
  3. ネットワーク要件等に合わせて初期構築
    1. 所要時間は環境に応じますが、比較的短時間でご利用可能になります
  4. トライアル開始
  5. ご利用開始

おわりに

SideCIはスタートアップから上場企業様まで、多くの会社様でご利用頂いております。
お問い合わせ頂いておりました方々や企業様、Enterpriseに対応していないためお見送りせざるを得なかった方々や企業様、ぜひこの機会に一度お話させて頂けましたら幸いです。

こちらからご連絡をお待ちしております。
support@sideci.com

メソッド定義を変更した場合の修正漏れを検知できるようになりました。

Update SideCI

こんにちは。今週のSideCIのアップデート情報です。

Ruby用の新しい解析ツール Method Definition Validator が利用できるようになりました。

メソッド定義を変更した場合の修正漏れを検知できるようになりました。

メソッドをリネームした場合や引数の数を変更した場合、そのメソッドを呼び出している箇所に対応漏れがないか?を検知します。

Pull Request内の変更差分だけではなくリポジトリ全体のコードが対象になるので「メソッド定義を変更したが、そのメソッドを使用している先の変更が漏れていた」などを検知できます。 対応言語はRubyです。

def do_something
  puts 'do_something'
end

do_something

例えば上記のdo_somethingメソッドをdef do_something(p)の様に変更した場合、呼び出し元では引数が足りないためエラーとなってしまいます。

今回追加した Method Definition Validator を有効にしておくことで、このような変更漏れを本番環境に紛れ込む前に事前検知して指摘することが可能です。

コードレビューを行う際はファイルの差分をもとに行うことが多いかと思いますが、このツールでは 差分がなかった箇所 を検知できるので便利かと思います。

f:id:sideci:20160610131534p:plain

SideCIの解析ツール選択画面から Method Definition Validator を有効にすることで、この機能を使用することが可能です。 ※SideCI上で既存でRuboCopを利用しているリポジトリに対してはデフォルトでONになっています

f:id:sideci:20160610131517p:plain

Rubocop DefinitionValidator はGitHub上でソースコードを公開してあります。

https://github.com/actcat/rubocop-definition_validator