Qodana
The code quality platform for teams
ワンストップですべてのコード品質インサイトを提供する Qodana Cloud のプレビューがリリースされました!
さまざまな Qodana リンターのデータを収集してまとめて表示するクラウドベースの一元化ソリューション「Qodana Cloud」のパブリックレビューが公開されました。 Qodana Cloud を使うと、担当者 が1 人のプロジェクトから大規模開発チームまで、さまざまな状況でコード品質チェックを管理できます。
Qodana Cloud は現在も開発中であるため、完成に向けての支援をコミュニティに呼び掛けています。 新機能をいち早く導入したい方は、以下で Qodana Cloud の使用開始手順をお読みください。

プロジェクトを補完する Qodana Cloud
複数のプロジェクトやリポジトリで静的解析を実行したいとお考えですか? コードベースが複数のサーバーと仮想プライベートネットワークに分散していますか? 複数のチームが別々に作業しているため、コード品質の一貫性を確保するのに苦労していませんか? 従来はこのような状況でコードをクリーンで安全に保つ場合、さまざまなリンターや Qodana インスタンスを切り替えながら別々のプロジェクトの結果を確認せざるを得なかったかと思います。
リンターを切り替える必要があると、コードプレビューのプロセスが複雑で非効率になりかねません。そこで、この問題を的確に解決するために Qodana Cloud を開発しました。 Qodana Cloud はさまざまな Qodana リンターの全データを 1 か所に集約し、対話型のダッシュボードで個々の課題をドリルダウンできるようにします。
Qodana Cloud には以下のようなメリットがあります。
プロジェクトのトレンドに関する詳細なインサイトを得る
さまざまなソースから 1 つのビューにレポートを集約する機能が備わっているため、すべてのプロジェクトのコードに見られるトレンドとパターンを発見し、プロジェクトまたはチーム全体のパフォーマンスについてより深く理解できます。 そのため、開発者はチームごとにバラバラにコーディングすることがなくなり、1 つの問題リストを確認できるようになります。 また、マネージャーは組織全体の進捗を追跡しやすくなります。

Qodana Cloud で別々の組織、チーム、およびプロジェクトを作成し、快適に操作できるように 1 つのチームを複数のプロジェクトに割り当てることができます。 また、ウィジェットがリアルタイムに更新されるため、透過性が高まります。

各プロジェクトでは、過去の結果を履歴で確認したり、品質チェックの結果をコミット間で比較したりできます。 検出された問題の絶対数を調べたり、特定の Qodana 実行期間に取得されたコードベースの問題のスナップショットであるベースラインと問題の件数を比較したりできます。
Qodana で検出された問題を使い慣れた IDE で開く
Qodana をすでにお使いの方は、Qodana が検出した問題を直接 IDE で開けることをご存知かもしれません。 Qodana Cloud でもこの機能を使用できます! つまり、IDE から他の提案を受ける場合と同じように、サーバー側のエラーをエディター内で修正できるということです。
その動作を以下に示します。

Qodana が JetBrains IDE にバンドルされていることが特に重要なのは、リソースを大量に使用するチェックを IDE のパフォーマンスを損ねることなく開発環境の外で実行できるためです。 上記の例では、変数が null になってランタイム例外が発生する可能性があることを Qodana が検出しています。 これは深刻な問題ではありますが、ユーザーはこのようなインスペクションをリソースを節約する目的でオフにする傾向があります。
事実、JetBrains が Qodana を作成した理由の 1 つは、ユーザーがコード品質と IDE のパフォーマンスのどちらかを選ぶ必要をなくすことでした。
作業を効率よく計画
大型プロジェクトを小さなステップに分割しましょう! 新しいバージョンの言語やフレームワークに切り替えたり、特定のユーティリティやパターンを除外したりする作業は面倒な場合があります。これは、関与する開発者と QA エンジニアが多い大型プロジェクトに取り組む場合は特に顕著です。
Qodana Cloud では、変更が必要なすべてのコードを評価するためのレポートを作成し、ベースラインまたは技術的負債といわれるセクションに追加する問題を選択できます。 このようにすることで、チームメンバー全員が対話型の Qodana ダッシュボードで同じ問題リストを確認し、進捗を監視できます。

ダークモードとライトモード
デザインの世界では、ダークモードが新しい標準となっています。 そのトレンドを見逃すことはありません! Qodana Cloud で優れた使い心地を得られるように、ダークテーマとライトテーマを手動で選択するか、UI をシステム設定に自動的に同期させるかを選べるオプションを追加しました。

今後実装予定の新機能
今後のリリースでは、ユーザーの職務に応じてさまざまな権限を付与できるロールベースのアクセス制御を追加する予定です。 たとえば、法務チームには製品で使用するライセンスに関するレポートを表示する機能のみが必要であったり、セキュリティチームにはコードベースに存在する脆弱性のリストを閲覧する機能が必要であったりします。 このような場合にチーム別にカスタムロールを作成し、それぞれのタスクに特化した権限を付与することが可能になります。 また、さらに多くのセキュリティ制御の実装と特定種類の問題に対応したクイックフィックスにも取り組んでいます。

最新情報については、当社公式 Twitter をフォローするか、ブログをご購読ください。
Qodana Cloud の使用開始手順
Qodana Cloud の使用を開始するには、qodana.cloud にアクセスして JetBrains Account でログインします。 または、ユーザー登録を行わずに Qodana Cloud が解析済みのデモプロジェクトを実際にご覧いただくこともできます。
他の Qodana インスタンスからクラウドにインスペクションレポートをプルするため、Qodana Cloud は CI ツールでプロジェクトに設定できるトークンを生成します。 詳しい手順については、ドキュメントをご覧ください。
プロジェクトのセットアップ
Qodana Cloud でのプロジェクトのセットアップは、以下の 5 つの簡単な手順からなります。
- 初回実行処理を行います。 まず、Qodana は極めて重要なチェックのみを使ってプロジェクトを解析します。 これにより、問題のあるファイルとフォルダーの数、使用言語、およびプロジェクトに関するその他の重要な情報が明らかになります。
- 解析をカスタマイズします。 次に、Qodana は解析に不可欠だと思われる追加のインスペクションを有効にするオプションを提案します。
- 解析結果を絞り込みます。 解析結果から特定のファイルとフォルダーを除外できます。
- 技術的負債を作成します。検出された問題をベースラインに追加することで、後でそれらの問題を再び参照できる機能です。
- プロジェクト全体にインスペクションを適用します。選択した設定をプロジェクトに適用するため、
qodana.yaml
とqodana.sarif.json
をダウンロードし、ルートフォルダーに配置して Qodana を再起動します。

今日のところは以上です! 今後のブログトピックについて提案がある場合、または Qodana がユーザーとビジネスにどのように役立つかを詳細に知りたい場合は、こちらにコメントを残すか、Twitter で弊社をタグ付けしてください。または、qodana-support@jetbrains.com でもご連絡いただけます。
読みやすいコードを書きながら、開発をお楽しみください!
オリジナル(英語)ブログ投稿の作者: