SiderでMISRA C規格準拠チェックが可能に。組み込みソフトウェアの開発にSiderによるMISRA C/C++チェックを

こんにちは。いつもSiderをご利用頂きありがとうございます。 SiderがMISRA C コーディングガイドラインの解析に対応いたしましたので、ご紹介します。 これにより、プルリクエスト単位で、そのプルリクエスト内で修正されたソースコードがMISRA C:2012に違反していないかを常時チェックすることが出来ます。 SiderではCppcheckという解析エンジンを用いております。そのエンジンのアドオンmisraを有効にする記載を、Siderの設定ファイルに記載していただくことでご利用いただけます。 sider.yml linter: cppcheck: addon: - misra MISRA C とは? MISRA C とは Motor Industry Software Reliability Association (MISRA) が策定しているC言語のコーディングガイドラインです。 組み込み制御システムや車載ソフトウェアといった高い水準の安全性を求められるソフトウェアの開発者向けに、ガイドラインのベストプラクティスを提供しています。 MISRA C はもともと自動車分野向けに策定されました。しかし、今日では鉄道/航空宇宙/医療機器などの幅広い組み込みソフトウェア分野でも採用されています。…

Continue Reading SiderでMISRA C規格準拠チェックが可能に。組み込みソフトウェアの開発にSiderによるMISRA C/C++チェックを

7月分の解析ツール更新を行いました

こんにちは。プロダクトチームの渡邉です。Siderでは毎月解析ツールのバージョンを見直しております。この度、7月分の更新作業を完了しましたので、お知らせします。更新内容は以下の通りです。 Checkstyle v8.10.1 -> v8.11 http://checkstyle.sourceforge.net/releasenotes.html#Release_8.11 https://github.com/checkstyle/checkstyle/releases/tag/checkstyle-8.11 PMD v6.4.0 -> v6.5.0 https://github.com/pmd/pmd/releases/tag/pmd_releases/6.5.0 ESLint v4.19.1 -> v5.1.0 https://eslint.org/docs/user-guide/migrating-to-5.0.0 https://github.com/eslint/eslint/blob/v5.1.0/CHANGELOG.md RuboCop v0.57.2 -> v0.58.1 https://github.com/rubocop-hq/rubocop/releases/tag/v0.58.0 https://github.com/rubocop-hq/rubocop/releases/tag/v0.58.1 Goodcheck v1.1.0 -> v1.2.0 https://github.com/sider/goodcheck/blob/v1.2.0/CHANGELOG.md#120-2018-06-29 TSLint…

Continue Reading 7月分の解析ツール更新を行いました

SideCIでJavaが検査できるようになりました

SideCIは最も使われているプログラミング言語の1つであるJavaのサポートをはじめました。 現在PMDとCheckstyleの2つのツールを提供していますが、これ以外にもサポートを希望するツールがありましたらお気軽にお問い合わせください! PMDとCheckstyleとは何なのか これらはJavaの静的解析器の中でも人気のあるツールで、コードのクオリティの改善を手助けします。 PMDはソースコードからプログラミングにおけるよくある間違いを見つけ出します。 たとえば、あなたのコードが使われていない変数を含んでいた場合、PMDはその変数が使われていないことを見つけ出します。これによってその変数への代入を削除することができるでしょう。 また、あなたのコードがExceptionのような一般的すぎる例外をキャッチしていた場合も、PMDはそれを見つけ出します。これによってより限定的で適切な例外を指定することができるでしょう。 このように、PMDはより良いJavaのコードを書くことを手助けします。 一方、Checkstyleはスタイルチェッカです。Checkstyleはコーディング規約への違反を自動的に見つけ出し、コードをきれいに保つ手助けをします。 一度コーディング規約に合った設定を行えば、コーディング規約への違反とは無縁のコーディングを送ることができるでしょう! PMD Checkstyle SideCIでの使い方 SideCIでこれらのツールを使うことには、単独で使うことに比べて2つの利点があります。 SideCIは既存のプロジェクトへこれらのツールを導入することをサポートします。SideCIではPull Requestの変更に含まれる指摘のみがレポートされるため、既存のコードに対する大量の指摘の嵐に悩まされることはもうありません。 ナンセンスな指摘はSideCIの指摘管理画面から無視をすることができます。SideCIでは、解析器の間違いによるCIの失敗のために新しくコミットをpushする必要はもうありません。 この素晴らしいツールとSideCIによって、Javaプログラマの皆様の開発がより楽しくなることを願っています! ご意見、ご要望などございましたらお気軽にお問い合わせください!

Continue Reading SideCIでJavaが検査できるようになりました

SideCIでMisspellが使えるようになりました🎉

こんにちは。id:Pocke です。

SideCIで新しい解析器がご利用いただけるようになりましたので報告させていただきます。
今回追加された解析器は、Misspellです。Misspellを使用することで、ソースコードやその中のコメント、ドキュメントなどに含まれる英単語のタイプミスを検出することができます。

f:id:Pocke:20171017191528p:plain

(more…)

Continue Reading SideCIでMisspellが使えるようになりました🎉

SideCIでのクラシックモード廃止のお知らせ

SideCIは、2017年10月31日をもちまして、サービスの正式リリース時より稼働しておりました、クラシックモードを廃止することをお知らせいたします。

  • お客様にご登録いただいておりますリポジトリは、11月1日以降すべて強制的に新規モードに切り替わります
  • 新規モードは既に稼働しており、2017年9月6日時点で移行することが可能です
    • 新規モードは完全な互換性を保つものではありません
    • 一部の解析器の設定に問題が生じることがあり、また開発チームでのレビューのワークフローに変更が必要となることがあります

新規モードへの移行に伴う問題の発生を防ぐため、お客様ご自身での、前もっての移行をお願いいたします。

(more…)

Continue Reading SideCIでのクラシックモード廃止のお知らせ

SideCIはレビューにフォーカスするため、負債カンバンを廃止しました

こんにちは。今日は私たちSideCIのメンバーにとって、また、ユーザの皆様にとって、大きなアナウンスをさせて頂きます。 2016年8月末より技術的負債を可視化し、その返済を支援する機能である「負債カンバン」を提供しておりました。本機能はベータ版として、Ruby on Railsプロジェクトに限定して提供しておりましたが、2017年6月28日をもって一度本機能をクローズさせて頂きました。 TechCrunchにて「自動コードレビュー「SideCI」が、技術的負債を可視化する「負債カンバン」提供開始」といった形でご紹介頂くなど、大きく反響があった機能ですが、少なくても直近1年ほどはコードレビューの自動化にフォーカスするため、一度クローズするという判断をするに至りました。 負債カンバンのイメージ 負債カンバンの成り立ち SideCIを提供していく中で、「SideCIによるレビューの自動化によって新しく書くコードについては品質が担保されるようになった。一方で、過去に書いたコードがボトルネックになっている部分がある」といった課題をお聞きする機会が多くありました。そのため、その課題を解決するための機能を開発していこうという決定をし、製品内容の検討をはじめました。 技術的負債については、次のような声をよくお聞きしました。 開発を進めるに当たってボトルネックになっている、技術的負債を返していきたい 技術的負債がどこにあるか、どんなものがあるかはエンジニア個々人が定性的な感覚として持っているのみで、チーム内の共通認識はない そのため、負債カンバンは次のような機能を解決策として盛り込みました。 技術的負債を可視化する 負債の深刻度合い、改修することによる投資対効果を判別し、優先度を付ける 優先度をカンバン形式で表示することで、どこから取り組むべきかをわかりやすく示す これらの機能によって、負債が可視化され、どこから返済していくべきなのかがわかりやすく、また、チーム内で共通の認識として持てるようになったと考えています。 負債カンバンの課題 一方で、負債カンバンには大きな課題が残っています。それは、技術的負債を返済するためのモチベーション、時間、その他色々な技術的負債の返済にあたって必要なプロセスを解消することが出来ていない点です。そのため、負債カンバンで可視化された技術的負債に納得感を持って頂ける方々、共通認識としての納得感(メンバー間の肌感のズレの少なさ)を持って頂くところまでは実現できているものの、実際の技術的負債の返済に貢献しているケースはまれでした。 可視化はあくまで第一歩に過ぎず、可視化したものを片付けていくための機能群が必要だと考えています。 一方で、SideCIはレビューの自動化に注力しており、レビューの自動化の点においてもたくさんのやるべきことが残っている中で、「レビューに時間がかかる」という課題とはまったく別の課題である、「技術的負債の返済が進まない」に対して商品開発を続けることは、適切ではないと判断致しました。 また、SideCIは生産性の向上への寄与を第一に考えており、レビュー自動化を提供しています。技術的負債は返済することは生産性の向上に繋がる点も大きくありますが、生産性の向上に寄与する技術的負債のみを機械的に発見することは難易度が高く、現状ではノイズが混ざってしまいがちです。 例えば、1行が300文字になっているコードを全て80文字にしたからといって、開発生産性が上がるわけではありません。インデントがタブとスペースが混同されているコードをどちらかに揃えても、生産性は上がりません。スパゲッティコードを解きほぐすリファクタリングは後々の生産性の向上に繋がりますが、とても難易度が高く、すぐに取り組めるものではありません。また、コードから読み解けない技術的負債が本質的な問題のこともよく有りますが、それはコードの静的解析から発見することは難しいです。 生産性に寄与する返済すべき技術的負債のみを見つけ、改善することは、2017年現代ではまだ難しいのです。 もちろん、私たちはそれに真摯に取り組むため、スパゲッティコードを見つけるのに役に立つ、Ruby言語でよく使われいるMetricFu内部の循環複雑度計算機saikuroに代わる新しい循環複雑度計算機のcycromaticを開発したりもしましたが、まだまだ道のりは遠いと考えるに至りました。 負債カンバンの今後の位置づけ 負債カンバンは2017年6月28日にクローズされました。いっときの間、負債カンバンの開発プロジェクトは凍結されます。 「技術的負債の返済が進まない」という課題の代わりに、「技術的負債が今後増えることをレビュー自動化によって防ぐ」ことに今まで以上にフォーカスします。 また合わせて、類似した別の観点として、「今はとっても急いでいるのでこのPullRequestに含まれる技術的負債は認識しつつもMergeする、あとで返済する」といったシーンで実際にあとで返済出来るようにする、新しいカタチの負債カンバンを作ることが1案としてあります。もしかしたらそれはカンバンではないかもしれませんが。 今後のSideCI 私たちはコードレビューの自動化を支援する、カスタムルールをRuboCopのCop追加などに比べて圧倒的に簡単に追加することが出来るQuerlyや、誤検知を恐れずにルールを書いていけるようにするための新WebUIである、アビシニアンモードの提供などを行ってきました。…

Continue Reading SideCIはレビューにフォーカスするため、負債カンバンを廃止しました

各種解析ツールのバージョンをアップデートしました!

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

各種解析ツールのバージョンをアップデートしました!
アップデート情報は以下に記載しておりますので、ご確認ください。

(more…)

Continue Reading 各種解析ツールのバージョンをアップデートしました!

SideCIの利用フローを大きく改善する、新機能のベータ提供を開始しました

こんにちは。本日より、非常に大きな新しい機能のベータ提供を開始しました。
この機能はまだベータ版であり、正式な名称が決まっていないことから、社内でのプロジェクト名「アビシニアン」にてご紹介させて頂きます。

アビシニアンについて

アビシニアンは、既存のSideCIの「問題が発見された場合にGitHubにコメントをする」というコア機能(※)を置き換える試験的な機能です。
※本記事内では該当機能を「コメントモード」と記載します。

コメントモードでご利用の場合、GitHub上でSideCIからのコメントをレビュアー、もしくはレビュイーの方が確認し、コードを修正するか、コメントをそのプルリクエストにおいては目をつぶるといった運用ケースが多いかと思います。
これをより厳密に、かつ現実に即した形で使いやすくした機能がアビシニアンです。
アビシニアンでは次のような形でSideCIを使って頂く事を想定しています。

  1. Pull RequestをOpenする
  2. SideCIから指摘が届いた場合、解析結果をレビュイーが確認する
  3. 指摘結果を元にコードを修正、もしくは修正しないことを明示する

この流れになることで、全てのコメントへの対応・非対応が厳密に、かつ簡単に管理されます。

(more…)

Continue Reading SideCIの利用フローを大きく改善する、新機能のベータ提供を開始しました

コードレビューの指摘結果が日本語訳に対応しました!

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

コードレビューの指摘結果が日本語訳に対応しました!

alt="indicatio-ja image"
日本語訳イメージ

今までは指摘結果はすべて英語のみに対応していましたが、ご利用者様からの多くの要望を受け、日本語での提供を開始いたしました。

(more…)

Continue Reading コードレビューの指摘結果が日本語訳に対応しました!