類似ツールとの比較
kareki は、ワークスペース全体の未使用コード検出と、CI での継続的な整理に重点を置いています。
機能比較
✅ 対応(オプションでの有効化を含む)、△ 一部のみ対応、— 該当機能なし。
| 機能 | kareki | ciach | Dart Code Linter | dependency_validator | Dart 標準解析 |
|---|---|---|---|---|---|
| 未使用の public 宣言・メンバーの検出 | ✅ | ✅ | ✅ | — | — |
| 未使用の private 宣言・メンバーの検出 | — | ✅ | ✅ | — | ✅ |
| public enum の未使用値の検出 | ✅ | ✅ | ✅ | — | — |
| 起点から到達できない public 宣言の循環参照の検出 | ✅ | — | — | — | — |
| 未使用 Dart ファイルの検出 | ✅ | — | ✅ | — | — |
| 未使用の pub 依存パッケージの検出 | ✅ | — | — | ✅ | — |
| 呼び出し元から渡されない public API の省略可能な引数の検出 | ✅ | — | — | — | — |
| テストからしか使われない public 宣言の検出 | ✅ | — | — | — | — |
| l10n 専用の未使用検査 | 近日対応 | — | ✅ | — | — |
| ベースラインによる新規指摘だけの報告 | ✅ | — | — | — | — |
| 不要な除外設定・ベースライン項目の検査 | ✅ | — | — | — | — |
| 未使用 public 宣言の自動削除 | 近日対応 | △ | — | — | — |
- ✅ でも解析対象には制限があり、たとえば kareki は演算子を検査しません。
- enum の値は宣言・メンバーの行とは分けて比較しています。
- Dart Code Linter のメンバー検査は public / private ともオプションで有効にします。enum の値も対象です。CLI
- Dart Code Linter の l10n 検査は Dart クラスのメンバーが対象です。クラス名の既定パターンは
I18n$で、AppLocalizationsには--class-pattern AppLocalizationsを指定します。設定 - ciach の自動削除には、報告のみで削除しない指摘があります。README
- 引数の行は「呼び出し元が値を渡すか」の検査です。Dart Code Linter の本体で読まれない引数の検査 や、Dart のprivate 宣言向けの検査 とは対象が異なります。
各機能の説明
未使用の public 宣言・メンバー
解析範囲内で利用が確認できない公開クラス、関数、フィールド、メソッドなどを検出します。kareki は、解析の起点から到達できない対象宣言を unused_element で報告します。解析の具体例
を参照してください。
public enum の未使用値
enum 型自体が使われていても、各値が使われているかを個別に検査します。例えば Status.active しか使わない場合、Status.archived は未使用の可能性があります。kareki は unused_element で判定し、Status.values に到達する場合は全値を保持します。各ルールの判定根拠
を参照してください。
起点から到達できない public 宣言の循環参照
互いに参照し合っていても、main などの起点から到達できない公開宣言のまとまりを検出します。kareki では、循環内に参照があるだけでは使用中とはみなしません。解析方式の違い
を参照してください。
未使用 Dart ファイル
別の対象ファイルから import / export / part されておらず、解析の起点でもない Dart ファイルを検出します。kareki の unused_file は、ファイル内の宣言への到達可能性とは別に、ファイルへの参照を検査します。各ルールの判定根拠
を参照してください。
未使用の pub 依存パッケージ
pubspec.yaml に宣言されていても、利用が確認できない依存パッケージを検出します。kareki の unused_pub_dependency は Dart の import だけでなく、対応するアノテーション、ビルド設定、ネイティブプラグイン、アセットからの利用も考慮します。import 以外の利用
を参照してください。
呼び出し元から渡されない public API の省略可能な引数
対象の呼び出し元が一度も値を指定しない、省略可能な名前付き引数・位置引数を検出します。関数本体で既定値を読んでいても、利用されていない API オプションを見つけられます。kareki の unused_parameter_optional は、不明な呼び出し経路が残る引数を報告しません。省略可能な引数の使用状況
を参照してください。
テストからしか使われない public 宣言
テストの起点からは到達できても、本番コードの起点からは到達できない公開宣言を検出します。kareki の test_only_used は、利用がまったく確認できないコードと、テストだけで使うコードを区別します。各ルールの判定根拠
を参照してください。
ベースラインによる新規指摘だけの報告
既存の指摘を保存し、次回以降は一致する指摘を報告から除外します。段階的に整理しながら、CI で新しく増えた問題を検出できます。kareki は --baseline で読み込み、--write-baseline で保存します。ベースラインの使い方
を参照してください。
不要な除外設定・ベースライン項目の検査
対象ファイルや未使用宣言の削除などにより、適用先がなくなった除外設定、抑制コメント、ベースライン項目を検出します。kareki doctor はファイルを変更せずに報告しますが、解析が不確かな場合は使用状況に依存する検査を完了できないことがあります。doctor の検査項目
を参照してください。
解析方式の違い
kareki は解析の起点から参照をたどるため、相互参照だけが残る public 宣言も検出対象です。ただし、生成コードや設定、動的呼び出しの扱いによって保持される場合があります。ciach の --transitive は未使用コードからしか参照されない宣言を検出しますが、循環参照は対象外です。Dart Code Linter は参照の有無で判定します。ciach の説明
、Dart Code Linter の判定処理
同名宣言の区別やパッケージ横断の参照収集は、ciach も対応しています。これらは kareki だけの利点ではありません。ciach の実装 、モノレポ対応
使い分けの補足
kareki は private 宣言・メンバーの未使用検出を Dart 標準解析に任せ、public API やパッケージ横断の検査を補います。型検査や lint も含め、dart analyze / flutter analyze は併用します。Dart の未使用宣言の診断
dependency_validator は未使用依存だけでなく、宣言漏れや dependencies / dev_dependencies の配置間違いも検出します。dependency_validator の説明
速度・誤検出率は比較実測していません。✅ は削除の安全性を保証するものではなく、公開 API や動的呼び出しなどは、指摘の確認と削除後のテストが必要です。
比較した版
確認日:2026 年 10 月 10 日。公式ドキュメントとソースに基づく比較です。
| ツール | 比較した版 |
|---|---|
| kareki | latest |
| ciach | 0.6.0 |
| Dart Code Linter | 4.4.2 |
| dependency_validator | 5.1.0 |
| Dart 標準解析 | 3.13.3 |