Siderでは様々な解析器をサポートしており、それらにはプログラミング言語ごとのカルチャーなどに応じて適切と思われる設定値を社内で検討し、デフォルト設定として提供してきました。ユーザー様が解析器の設定を独自に行わない場合、そのデフォルト設定が適用されています。
そのデフォルト設定を今後、学術機関との共同研究の成果によって生み出された、定量的にデフォルト設定として適切であると考えられるルール(以下、Recommended Rulesと記載)に置き換えていきます。
提供スケジュールは本記事で随時更新をしていきますので対象となる解析器をご利用の方は次の3点をご認識ください。
- デフォルト設定でSiderを利用中の場合出力する指摘が変わる可能性がある
- デフォルト設定置き換えに先立って試すことが出来る
- 以前の設定値もユーザ様独自の設定として設定ファイルを作成いただければ適用出来る
本記事では次の内容を記載させて頂きます。
- Recommended Rules概要
- 解析器ごとのRecommended Rulesの適用開始日(デフォルト置き換え)
- 解析器ごとのRecommended Rulesのオプトイン・提供開始予定日とリンク
- Recommended Rulesをすぐに利用されたい場合の利用方法
- Recommended Rulesについての詳細
Recommended Rules概要
新しいコーディングガイド(解析ルール)を2020年12月22日にプレスリリースにて発表させていただいたきました。そして、この私達が推奨する解析ルールのセットを「Recommended Rules」と名付けました。
https://prtimes.jp/main/html/rd/p/000000006.000054556.html
Recommended Rulesは「どのようなプロジェクトであっても有益であるコーディングガイド」であることを目標にし作られました。これをSiderのデフォルト設定として提供させていただき、その後プロジェクトに合わせて必要なルールを追加(有効化)していくことで、プロジェクトにあったガイドの設定と運用が簡単にできるようになります。
Recommended Rulesは、GitHub上で公開されている人気のリポジトリを分析し、実際に守られている(多くのOSS開発者が守っている)ルールのみを抽出したものです。それにより、Siderがうるさくなく、かつ、有益なルール(Siderが指摘しなければ人が指摘するだろう物など)を提供するようになっています。ぜひご活用ください。
解析器ごとのRecommended Rulesの適用開始日(デフォルト設定変更)
以下に記載のある解析器については順次Recommended Rulesが適用されていきます。日付は準備が出来次第アップデートさせて頂きます。莫大な量のソースコード、ルールの遵守の度合いを解析し、それを元に策定していることから、提供タイミングにラグがあることをご了承ください。
- Ruby
- RuboCop 2021年5月18日
- Java
- Checkstyle 2021年3月16日
- PMD 2021年5月18日
- JavaScript and Flavors
- ESLint 2021年5月18日
- PHP
- PHP_CodeSniffer 2021年3月16日
- PHPMD 2021年7月13日
- Python
- Flake8 2021年3月16日
- C/C++
- cpplint 2020年12月22日
- Cppcheck 2021年7月13日
※いくつかの解析器に関するRecommended Rulesの適用が当初の計画より遅くなってしまい申し訳ございません。
上記に記載のない解析器については検討中です。セキュリティに関する解析器などの全てのルールに対応する必要がある解析器、ユーザーが任意のルールを書くことが出来るSider製の解析器などについてはRecommended Rulesの役割に沿わないため提供を行う予定はありません。
解析器ごとのRecommended Rulesの提供(オプトイン)開始予定日とリンク
Recommended Rulesの設定ファイルを下記に記載のURLにて配布しています。
ダウンロードし、リポジトリに配置頂き、解析器によっては明示的にsider.ymlでそのファイルを指定頂ますようお願いいたします。その設定を行っていただくことにより、デフォルト設定として反映されるのを待たずしてRecommended Rulesを利用することが可能です。
- Ruby
- Java
- JavaScript and Flavors
- PHP
- PHP_CodeSniffer 2021年2月
- PHPMD 2021年6月
- Python
- C/C++
各解析器でのルールの指定の仕方は下記ヘルプサイトから該当する解析器のページにてご確認ください。
https://help.sider.review/getting-started/custom-configuration
Recommended Rulesについての詳細
Recommended Rulesは学術機関との共同研究の成果によって当社にて開発を行ったものです。
詳細については今後、論文として新たに公開をする予定です。公開しましたらこちらにリンクを記載させていただく予定です。
現時点で公開済みの参考論文、また、本研究の共同研究先は下記のとおりです。
- 参考論文・ポスター等
- 倉重 徹, 末次 健太郎, 角 幸一郎, 名倉 正剛, 高田 眞吾, 浅原 明広: OSS を対象にしたコーディング規約違反発生状況の調査, ソフトウェアエンジニアリングシンポジウム2020 (SES2020),ポスター セッション(2020年9月)
- 名倉正剛, 田口健介, 高田眞吾: コーディング規約違反メトリクスに基づきソフトウェア変更に対して不具合混入を予測する手法, 情報処理学会論文誌61巻4号, pp.,895-907 (2020年4月)
- 共同研究先
- 慶應義塾大学理工学部情報工学科高田研究室 高田眞吾教授
- 南山大学理工学部ソフトウェア工学科 名倉正剛准教授
まとめ
Recommended RulesがSiderのデフォルト設定として今後適用されます。Siderのデフォルト設定を現在ご利用の方は指摘の量が増える・減るといった何らかの影響が発生します。予めご承知おきください。また、ご不安な方や先に試されたい方、この機会に設定をカスタマイズしていきたい方は本記事で紹介しているURLからRecommended Rulesをダウンロード頂き、リポジトリ内に配置し、ご設定ください。
今後もSiderでは新しい機能、取り組みを進めていきます。今後ともどうぞよろしくお願いいたします。