INTRODUCING

実務に最適なコードレビューガイドライン

Siderでは様々な種類の解析器・Linterを用いてソースコードを検査しています。 様々なコーディング規約が世の中にはあり、中には開発者のコーディング時の実態に則していないことが多くあります。 Siderでは実態に則したコードレビューを提供しています。

提供中のRecommend Rules

以下のプログラミング言語での検査にはSider独自のコーディングガイドライン・コーディング規約を用いています。

C++
Java
Python
php
JavaScript
TypeScript
Ruby

Recommended Rulesの根拠

Siderが提供するRecommended Rulesはそれぞれの各プログラミング言語のOSSコミュニティで人気のある・活発であるリポジトリで 「実際に守られているコーディングガイドライン」を元にして作成しています。

ヒューリスティクスな手法を用いて作成しており、端的には下記のとおりです。

  • ベースとなるコーディングガイドラインを選定(例: Javaの場合、Sun Conding Standard及びGoogle Coding Standardなどで採択されているコーディングガイドラインなど)
  • 人気のある・活発である1000個のリポジトリのgitのコミットを遡りソースコードを分析、コーディングガイドライン違反の発生、違反への対処の有無、対処方法や対処時期を抽出
  • 抽出したデータを機械的に学習(クラスタリング)、1000リポジトリの開発コミュニティ内で共通して「実際に守られている」コーディングガイドラインを抽出
  • 抽出したコーディングガイドラインを人的な確認を入れた上でRecommended Rulesとして提供

REFERENCED OSS

1000個のサンプルに選んだOSSコミュニティの一部

Recommended Rulesのカスタマイズ

Recommended Rulesはあくまで「特定のプログラミング言語の開発者が広く守っているルール」のみを抽出したものであり、 従来の静的解析器・Linterの既定の設定を使った場合と比較して「うるさくない(Noisyではない、false-positiveが少ない)」のが特徴です。 一方で、デメリットとして、検出されるものが従来のものに比べて少なくなるように抑制されています。

例えば、""(ダブルクォーテーション)と''(シングルクォーテーション)を明確に使い分けたいプロジェクト(リポジトリ)では、Recommended Rulesではそれについては指摘が行われません。

その場合、Recommended Rulesを元にし、お客様独自のルール・設定を作成いただく必要があります。 一方で、それはRecommended Rulesを参照する設定ファイルをリポジトリ内に置く、もしくはコピーしたファイルをリポジトリ内に置き、 追加したいルール(有効化するルール)を記載をしていただくことで、よりお客様のプロジェクトに沿った設定でSiderは動作します。

具体的な設定方法については解析器ごとに異なるため、下記ドキュメントを参照ください。

ルールは必要に応じて取り込んだり、拡張することができます。

上述のRecommended Rulesは1000のOSSリポジトリを教師データとして作成されています。 そのため、プロジェクトによってはそぐわない(有効にしたい、無効にしたい指摘がある)部分がある可能性があります。 より便利にお使いいただけるように、リポジトリを分析し、そのリポジトリにとって最適なRecommended Rulesを自動的に生成する機能を現在研究しています。 こちらにご興味がある方は画面右下のチャットよりその旨をご連絡ください。

Collaborators

Recommended Rulesは、学術機関・研究者との共同研究や論文をベースに行われています。

論文発表・学会発表

倉重 徹, 末次 健太郎, 角 幸一郎,名倉 正剛, 高田 眞吾, 浅原 明広: OSS を対象にしたコーディング規約違反発生状況の調査, ソフトウェアエンジニアリングシンポジウム2020 (SES2020),ポスター セッション(2020年9月)

名倉正剛, 田口健介, 高田眞吾: コーディング規約違反メトリクスに基づきソフトウェア変更に対して不具合混入を予測する手法, 情報処理学会論文誌61巻4号, pp.,895-907 (2020年4月)

共同研究者

慶應義塾大学理工学部情報工学科高田研究室
高田眞吾教授

南山大学理工学部ソフトウェア工学科
名倉正剛教授

解析結果まで30秒。
無料ではじめられます

オープンソースプロジェクトはすべての機能が無料。
プライベートリポジトリは無料トライアルでお試しいただけます