ソースコードレビューツールとは?代表的ツール7種をご紹介

 ソースコードレビューは、近年のソフトウェア開発プロセスに不可欠な要素ですが、リリース時期が迫りメンバーが多忙になると、十分にコードの確認ができなかったり、レビュー自体がスキップされてしまうことも起こりがちです。そのような忙しい場合でも品質を一定に保つためには、レビューの効率を上げる必要があります。この記事では、コードレビューの効率を上げるために、現在(2020年)広く導入されているコードレビューツールを7つご紹介します。

ソースコードレビュー

ソースコードレビューとは?

 ソースコードレビューが行われるタイミングは様々です。ソースコードマネージメントツールとしてGitHubGitLab を利用している場合は、最も一般的なコードレビューのタイミングはPull Request (GitLab の場合Mearge Request) のタイミングでしょう。組み込み系開発などでは、ある程度まとまった単位でのコードを、メンバー全員で時間をかけてレビューするやり方もあります。コードレビューを行う主たる目的は以下のとおりです。

不具合の発見: マルウェア、バグ、パフォーマンスの問題、セキュリティホールなど、コードの欠陥を見つけることは、コードレビューの最もな重要な要素です。

コード品質の向上: ソースコード単体の不具合を見つけるだけではなく、プロジェクト全体の品質を改善します。「機能している」からといって、改善する箇所がないわけではありません。コードレビューによってリファクタリングが必要な箇所がみつかることもあるでしょう。

学習・ナレッジシェア:  新人開発者や品質保証エンジニアは、コードレビュープロセスを導入することで、開発者の意図を学ぶことができ、スキルアップにもつながります。また、チームの誰かがなんらかの理由で抜けることになっても、他のメンバーがバックアップ可能になります。

連帯感の向上: コードレビューは、チームワーク、責任感、コミュニティの形成に役立ちます。

コードレビューツール7選

 今日の市場には数十種類ものコードレビューツールが存在し、その中から組織のニーズに最適なものを選ぶのは難しいでしょう。以下では、汎用性が高くかつ堅牢なコードレビューツールを紹介します。

GitHub

GitHubはプルリクエストの画面にコードレビューツールが付属しています。すでにGitHubを使ってGitレポジトリをクラウドで管理している場合、プルリクエストを使ってコードをレビューするのはもはやあたりまえになっているかもしれません。無料でも利用可能ですが、保持できるデータ量や月ごとに行えるアクション数に制限があるため、チームや企業で利用する場合は有料のオプションを選択することになるでしょう。

GitHubでは、レポジトリへのアクセス権を持つメンバーをプルリクエスト毎にレビュアーとして割り当てることができます。プルリクエストを提出した開発者は、管理者にコードレビューを依頼することもできます。変更履歴の確認だけでなく、プルリクエストの議論やdiffの分析、インラインでのコメントも可能です。コードレビューツールでは、GitにおけるコンフリクトをWebインターフェイスで解決することもできます。さらに、マーケットプレイスを通じて追加のレビューツールと統合することで、レビュープロセスの機能を拡張することもできます。

GitHub付属のコードレビューツールは、あなたの組織がすでにGitHubを利用している場合には最適なツールです。すべてが組み込まれているので、追加のインストールや設定は必要ありません。

Review Board

Review Board は、このWebベースのオープンソースのコードレビューツールです。コードレビューとドキュメントレビューの両方が利用可能で、コード比較をグラフィカルに表示することができます。ウェブサイトでデモ版を試すこともできるし、ソフトウェアをダウンロードして自分のサーバーにセットアップすることもできます。Review Board の初期バージョンはかなり前にリリースされたものですが、依然として活発な開発が行われています。

Review Board を実行するための要件には、Python の実行環境とデータベースとして使用する MySQL または PostgreSQL、および Web サーバーが含まれます。もちろん、これらのソフトウェア実行するために必要なその他のツールやライブラリも必要です。

Review Boardは、Git、Mercurial、CVS、Subversion、Perforceのような多様なバージョン管理システムと統合可能です。また、Review BoardをAmazon S3にリンクして、ツール内に直接スクリーンショットを保存することもできます。

要件に応じて、プレコミットとポストコミットの両方コードレビューを実行することができます。バージョン管理システムを統合していない場合は、差分ファイルを使用することができます。差分ファイルを作成するための低価格または無料の比較ツールが多数用意されています。

Review Board は非常にシンプルなコードレビューツールで、他のツールよりもかなり緩やかな学習曲線を実現しています。

Crucible

Crucible はアトラシアンのコードレビューツールです。商用のツール群の一部で、多数のバージョン管理システムにまたがるコードレビュー、計画変更の議論、バグの特定を可能にします。

Crucible は小規模チーム向けと企業向けの 2 種類の支払いプランを提供しています。小規模なチーム向けには、5人のユーザに限定された無制限のレポジトリに対して、少額の1回限りの支払いが用意されています。大規模なチームの場合、10ユーザーと無制限のレポジトリの料金は、はるかに高い料金から始まります。どちらのプランも30日間の無料トライアルを提供しています。Crucible は多くのバージョン管理システムをサポートしているという点でReview Board と似ています。Crucible は SVN、Git、Mercurial、CVS、Perforce がサポートされています。

Crucible は Bitbucket, Confluence, Jira など、Atlassian の他のエンタープライズ製品のユーザーであれば統合して使用することで、最大のメリットを得ることができるでしょう。

Phabricator

 Phacilityはオープンソースのコードレビューツールです。ツールをダウンロードして自分のサーバーにインストールするのは無料で、使用数も制限されていません。有償でPhacillity社が提供するクラウドベースのバージョンを使用することもできます。この場合、技術サポートが含まれています。Phabricatorは、Git、Mercurial、SVNの3つの代表的なバージョン管理システムをサポートしています。

チームメンバーと詳細な会話をしたい場合、Phabricatorを通じてアレンジすることができます。プレコミット、ポストコミット、両方のコードレビューが利用可能です。さらに、Phabricatorには、ソフトウェア開発サイクル全体でチームを支援するための追加ツールがあります。例えば、バグや機能を管理するためのビルトイントラッカーを提供しています。また、ツール内でソフトウェアのナレッジベースWiki を作成し、ユニットテストを統合することもできます。

以上のようにPhabricatorは開発プロセスを効率的にするために必要な一通りの機能を有しています。あなたのプロジェクトが初期段階にある場合は、このツールを選ぶとよいでしょう。クラウド版は、サーバーを維持するための専門知識を持たない(あるいは運用に人的リソースをかけたくない)チームに最適です。

Collaborator

SmartBear社が開発したこのツールは、ピアレビューのためのツールです。ソースコードのレビューに加えて、Collaboratorでは設計ドキュメントのレビューも可能です。有償ライセンスですが、無料トライアルも用意されています。

Collaboratorは、Git、Subversion、Perforce、CVS、Mercurial、TFSなど、多くのバージョン管理システムをサポートしています。また、Jira、Eclipse、Visual Studioなどの一般的なプロジェクト管理ツールや統合開発環境(IDE)との統合にも優れています。

このツールは、コードレビュープロセスに関連する主要なメトリクスのレポートや分析を、ピアレビューだけで「昔ながらの方法」で行うよりもはるかにシンプルで効率的にすることができます。レビュー管理ツールとバグ追跡ツールでチームを支援することができる、オールインワンのコードレビューツールです。

CodeScene

CodeSceneは、従来の静的なコード解析を超えたコードレビューツールです。バージョン管理の履歴を処理してコードの可視化を提供します。さらに、機械学習アルゴリズム(ツールの時間的または時間的な要素)を適用して、コード内のソーシャルパターンや隠れたリスクを特定します。

コードベースの進化の分析に「時間」という新たな次元を含めることで、行動データに基づいたコード分析を行います。バージョン管理履歴を利用して、チームのメンバーをプロファイル化し、個々のナレッジベースをマッピングし、これらのプロファイルマップを利用して、チーム間の依存関係を作成します。これは、特定の人にナレッジが集中してしまう問題を緩和してくれます。

また、チームのレポジトリに「ホットスポット」という概念を導入して、どのファイルがいつ最も開発活動を行っているかを特定することもできます。これらのホットスポットは通常、今後最も注意を払う必要があり、CodeSceneコードレビューツールは優先順位をつけるのに役立ちます。

CodeSceneはクラウドベースとオンプレミスの両方で利用できます。クラウドベースのプランは、GitHub上でホストされているパブリックレポジトリであれば無料で利用できます。プライベートレポジトリやGitHub以外のクラウドレポジトリでは、開発チームのユーザー数に応じて月額料金が発生します。

Sider

Siderは、組織やプロジェクトごとのカスタムルールセットや一般的なベストプラクティスに照らし合わせて、すべてのプルリクエストを自動的に分析します。つまり、ソースコードレビューの自動化を実現するソリューションです。コーディングルールに従っているかの確認や、非推奨の関数・メソッドの指摘、単純なスペルミスなどは、ソフトウェアの方が抜けもれなく確実に検出してくれます。そのようなレビューはSider に任せることで、エンジニアはロジックの分析など、より本質的なレビューに集中することができます。これにより、エンジニアリングチームの生産性を最大化するのに役立ちます。

Sider は、プロジェクト固有の知識をチームと共有することでコラボレーションを可能にします。ソースコード内に事前に設定されたパターンを検出した際に、チームメンバーに知らせることができます。サインアップは無料でGitHub経由で行うことができます。プライベートレポジトリに対してSider を利用する場合は有償ですが、2週間のフリートライアルが利用可能です。また、最近GitLab 版にも対応されました。

結論

この記事では、人気のある代表的なコードレビューツールをいくつか紹介しました。

それぞれのツールの利用料金は大きく異なります。完全に無料のものから数百ドルのものまでありますが、価格は頻繁に変更されるため、ここでは記載しておりません。それぞれのWebページでご確認ください。ほとんどのツールで、何らかの形で試用版の提供があるため、気になるツールはまず試してみてはいかがでしょうか。

この記事でレビューしたものも含め、あらゆるツールには長所と短所があります。自分やチームに適したツールを賢く使って、コードレビューの効率を改善しましょう。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください