フレームワークプリセット
archlintはYAMLベースのプリセットを使用して、フレームワーク固有のパターンを理解し、偽陽性(False Positives)を削減します。
仕組み
archlintは、package.jsonの依存関係と設定ファイルを分析することでフレームワークを自動的に検出します。また、.archlint.yamlで明示的にプリセットを拡張することもできます。
yaml
extends:
- nestjs
- ./my-company-preset.yaml組み込みプリセット
- nestjs: NestJSアプリケーション用。
- nextjs: Next.jsプロジェクト用。
- react: Reactライブラリおよびアプリケーション用。
- oclif: oclifで構築されたCLIツール用。
カスタムプリセット
プリセットファイルは、自動検出のための追加のdetectセクションを含む標準のarchlint設定ファイルです。
構造
yaml
name: my-framework
version: 1
# 自動検出ルール
detect:
packages:
any_of: ['my-core-pkg']
files:
any_of: ['my-framework.config.js']
# グローバルルール
rules:
layer_violation: high
dead_symbols:
ignore_methods: ['onInit', 'onDestroy']
vendor_coupling:
ignore_packages: ['my-framework/*']
# パス固有のオーバーライド
overrides:
- files: ['**/*.controller.ts']
rules:
lcom: off
# デッドコード分析のパターン
entry_points:
- '**/*.controller.ts'カスタムプリセットの読み込み
ローカルファイルまたはURLからプリセットを読み込むことができます。
yaml
extends:
- ./presets/shared.yaml
- https://raw.githubusercontent.com/org/archlint-presets/main/standard.yamlマージロジック
プリセットは指定された順序でマージされます。優先順位は次のとおりです。
.archlint.yamlのユーザー設定(最優先)extendsリスト内のプリセット- 自動検出されたプリセット
- archlintのデフォルト設定(最低優先)
リストベースの設定(entry_pointsやルール内のignore_packagesなど)の場合、archlintはすべての値の和集合を実行します。ルールとオーバーライドは再帰的にマージされます。