GitHub Actions で Rubocop と ESLint にバンドルされた gem を無視させる
Rails プロジェクトでは、GitHub Actions で gem を vendor ディレクトリにインストールして、以降の実行でキャッシュできるようにすることがよくあります。
アクション内でコードリンターを使う場合は、誤検出を防ぐために vendor/bundle/\* を除外する必要があります
ESLint の場合は ignorePatterns で設定できます
// ./.eslintrc.json
{
"ignorePatterns": [
"vendor/bundle/*"
]
}
Rubocop の場合は AllCops 設定で除外できます
# ./.rubocop.yml
AllCops:
Exclude:
- 'vendor/**/*'
コードリンターでバンドルされた gem を無視することの重要性
ソフトウェア開発では、高いコード品質を維持することが不可欠です。コードリンターは静的コード解析を行うことでこれを支援するツールで、潜在的なエラーを検出し、一貫したコーディングスタイルを強制できます。ただし、GitHub Actions のような継続的インテグレーション環境でリンターを使う場合は、誤検出を避けるために正しく設定することが重要です。
バンドルされた gem は多くの場合 vendor ディレクトリに格納される外部のコード依存で、適切に除外しないとコードリンターに検出されてしまうことがあります。これらのディレクトリを無視することで、リンターを外部ライブラリではなく自分のソースコードに集中させ、コード解析の正確性を保てます。
バンドルされた gem を除外するリンターの設定
ESLint を使う JavaScript プロジェクトでは、.eslintrc.json ファイルの ignorePatterns 設定を通じて、リンターが vendor/bundle/* ディレクトリを無視するように設定できます。これにより自分のコードだけがチェックされるようになり、余計なノイズなしにコード品質を向上できます。
// ./.eslintrc.json
{
"ignorePatterns": [
"vendor/bundle/*"
]
}
同様に、Rubocop を使う Ruby プロジェクトでは、.rubocop.yml 設定ファイルの AllCops 以下に Exclude ルールを追加することで vendor ディレクトリを除外できます。これにより、静的コード解析を実際のソースコードに集中させられます。
# ./.rubocop.yml
AllCops:
Exclude:
- 'vendor/**/*'
コードリンターがバンドルされた gem を除外するように設定することで、静的コード解析での誤検出を避けながら、高い水準のコード品質を維持できます。