レールカバレッジツール:カバーバンド


カバーバンド


ドキュメントによると、Coverbandは以下の通りです.

A gem to measure production code usage, showing a counter for the number of times each line of code that is executed. Coverband allows easy configuration to collect and report on production code usage. (...) The primary goal of Coverband is giving deep insight into your production runtime usage of your application code, while having the least impact on performance possible


TLドクター
Coverbandを使用すると、アプリケーションによって使用されているコードとして考えることができるRailsアプリケーションにどのようなコードが読み込まれているかを洞察できます.これはリファクタリングのための非常に有用なツールであり、もはや使用されていないか、必要なコードを削除することができます.

デモ


から働きますthis repo . あなたはそのコードを見ることができますmy Rails app template 私はこのプロジェクトを作成するために使用.
チュートリアルの残りの部分は、すでに機能レールアプリケーションがあると仮定します!

インストール


カバーバンドを追加してくださいGemfile . 私は個人的に私の開発グループに保管することを決めました.
# Gemfile

gem "coverband", group: :development

# or

group :development do
  gem "coverband"
end
次に実行します.
bundle install

構成


レッドシス


レッドバンドのカバーバンドのカバレッジデータ.ドキュメントによると、REDISエンドポイントは次のようになります.
ENV['COVERBAND_REDIS_URL']
ENV['REDIS_URL']
localhost
また、これを特にCoverBand初期化ファイルに設定することもできます.あなたが私が使用しているテンプレートを使用しているなら、あなたはすべてのセットでなければなりませんredis 宝石、あなたのアプリケーションにアクセスできます.

初期化装置


宝石を設定しましょう.CoverBandの初期化ファイルを作成します.
# config/coverband.rb

Coverband.configure do |config|
  config.ignore += ["config/application.rb",
                    "config/boot.rb",
                    "config/puma.rb",
                    "bin/*",
                    "config/environments/*",
                    "lib/tasks/*",]
end
これらの設定は、私たちの指定されたファイルとパスを無視するようにcoverbandに指示します.

ルート


さて、coverdbandのルートを追加して、Webダッシュボードを見ることができます.
# config/routes.rb

Rails.application.routes.draw do
  mount Coverband::Reporters::Web.new, at: "/coverband" if Rails.env.development?
end
あなたが生産でこのツールを走らせているならば、あなたは適切な認証でこのルートを保護しなければならない点に注意しなければなりません.

用途


我々はすべてのカバーバンドを提供することができます参照してくださいする必要があります!
Railsサーバーを起動し、localhost:3000/coverbandまた、次のRAKEタスクを実行することもできますcoverage/ . 私は、このディレクトリがあなたの.gitignore .
rake coverband:coverage
あなたはすぐにカバーバンドのレポートを表示するcoverbandのマウント可能なWebインターフェイスです見てください.

0 %のカバレッジを持つファイルをクリックすると、次のメッセージが表示されます.

This file was never loaded during app runtime or loading (or was loaded before Coverband loaded)!


基本的には、ファイル内のコードがロードされていないため、使用されません.
部分的な範囲でファイルをクリックすると、以下のようになります.

このビューでは、使用されている行、およびこれらの行が強調表示されます.コードをリッピングする前に注意してください.
posts_controller 上の例では、コードをnew and create メソッドは使用されません.私はUIを開き、新しいポストを作るつもりです.あなたは、カバレッジレポートが現在少し異なります.

Coverbandフラグを削除する前に、何らかのデューデリジェンスを実行することが重要です.上の例では、いくつかの調査の後、私は実際には必要ありません実現config/spring.rb 私は使っていないからspring このプロジェクトで.これは、このライブラリの力、削除するのに安全であるかもしれないコードベースの領域に向けてあなたを指す能力ですしかし、もし私がフラグコードを削除したposts_controller それなら少し困っている.

追跡宝石


また、宝石の使用を追跡するcoverbandを使用することが可能です.これはまだ実験段階にあり、docsによる生産には推奨されません.
アクションでそれを見るには、まず初期化を行いましょう.
# config/initializers/coverband.rb

Coverband.configure do |config|
  config.track_gems = true
  config.ignore += ["config/application.rb",
                    "config/boot.rb",
                    "config/puma.rb",
                    "bin/*",
                    "config/environments/*",
                    "lib/tasks/*",]
end

ドキュメントによると

When tracking gems, it is important that Coverband#start is called before the gems to be tracked are required. The best way to do this is to require coverband before Bundle.require is called


だから更新application.rb を確認する前にBundler.require が呼び出されます.
# config/application.rb

require "coverband"
Bundler.require(*Rails.groups)
Railsサーバーを再起動してください、そして、あなたがlocalhost:3000/coverband .

これは、削除するのが安全であるかもしれない宝石への洞察を与えるのを助けることができます.

追跡ビュー


あなたの意見を見るための設定オプションがありますがRails 6.0.2.1 and Ruby 2.7 それで、私は現在それに入りません.
参照the advanced configuration documentation を参照してください.

概要


CoverBandは、削除するのが安全であるかもしれないあなたの柵アプリでコードを見つけるのを援助するすばらしいツールです.しかし、ツールは完璧ではないので、コードが実際に安全に削除することができます注意してください.私は個人的にこのツールを使ったCodeFund's CodeBaseと削除できるいくつかのコードを発見!そして、誰がコードを削除するようにしませんか?間違いなくあなたのツールベルトにこのツールを追加することをお勧めします.

リンク

  • coverband gem
  • rails template
  • repo for this post
  • ハッピーコーディング!