対応ツール¶
pyfltrが対応するformatter / linter / testerを言語・用途別に示す。 初めて使う場合ははじめにを参照。設定から実行までの導入手順を確認できる。
言語カテゴリ(Python / JS/TS / Rust / .NET)に属するツールはすべて既定で無効(opt-in)。
preset = "latest" + 言語カテゴリキー(python / javascript / rust / dotnet)のtrue指定だけで、
当該言語の推奨ツール一式がゲートを通過して有効化される。
追加ツールや個別の無効化が必要な場合のみ{command} = true / {command} = falseを書き足す。
詳細は設定項目を参照。
Python系¶
対応するPython系ツールはruff-format / uv-sort / pylint / mypy / ruff-check / pyright / ty / pytestの8種。
このうちtyのみpreset非収録のため、必要に応じてty = trueを個別指定する。
Python系ツール一式は本体依存に同梱されているため、uvx pyfltr単発で利用できる。
- Formatters: ruff format / uv-sort(依存定義のソート)
- Linters: pylint / mypy / ruff check / pyright / ty
- Testers: pytest
JS/TS系¶
対象はprettier / tsc / eslint / biome / oxlint / vitestの6種(TypeScriptも同カテゴリ)。
js-runner設定で起動方式(pnpx / pnpm / npx等)を切り替える。
- Formatters: prettier
- Linters: tsc(型チェック。
pass-filenames = falseでプロジェクト全体を対象)/ eslint / biome / oxlint - Testers: vitest
Rust系¶
推奨ツール一式はcargo-fmt / cargo-clippy / cargo-check / cargo-test / cargo-denyの5種。
プロジェクト全体(crate単位)を対象とし、{command}-runner既定値"bin-runner"に従い
グローバルbin-runner既定"mise"によりmise経由で起動する。
PATH上のcargo等を直接実行したい場合はcargo-fmt-runner = "direct"等を設定する。
- Formatters: cargo fmt
- Linters: cargo clippy / cargo check / cargo deny(依存ライセンス・脆弱性チェック)
- Testers: cargo test
.NET系¶
推奨ツール一式はdotnet-format / dotnet-build / dotnet-testの3種。
プロジェクト全体(solution単位)を対象とし、{command}-runner既定値"bin-runner"に従い
グローバルbin-runner既定"mise"によりmise経由で起動する。
PATH上のdotnetを直接実行したい場合はdotnet-format-runner = "direct"等を設定する。
direct実行時は環境変数DOTNET_ROOT配下にdotnet実行ファイルがあれば優先採用する。
- Formatters: dotnet format
- Linters: dotnet build(ビルドエラーをlint段階で検出)
- Testers: dotnet test
ドキュメント系¶
- Linters: markdownlint-cli2 / textlint / designmd / lychee
pyfltrの設定キーとコマンド名はmarkdownlint(例: markdownlint = true、--commands=markdownlint)だが、
実際に起動するのはmarkdownlint-cli2である。
これは設定キー名の簡潔さを優先した意図的な設計であり、利用者はこの対応関係を把握した上で設定・コマンド指定をする。
designmdの設定キーとコマンド名(例: designmd = true、--commands=designmd)は
内部識別子であり、実際に起動するnpmパッケージは@google/design.mdである。
@google/design.mdはpyproject.tomlのドット区切りキーと衝突するため、pyfltrは内部識別子としてdesignmdを採用する。
対象ファイル名は仕様上DESIGN.md固定で、本リポジトリ内に該当ファイルがあれば自動的に対象となる。
lycheeはRust製のリンク切れチェッカーで、Markdown・HTML中の外部URL到達性を検証する。
bin-runner経由(既定はmise)で起動する。
ネットワーク到達失敗による判定変動を抑えたい場合はlychee-severity = "warning"で警告扱いに切り替えられる。
その他¶
- Formatters: shfmt(既定で無効)/ taplo(TOML formatter、既定で無効)
- Linters
- 一般: typos(PyPI依存)/ actionlint / ec(editorconfig-checker、既定で無効)/ shellcheck(既定で無効)/ glab-ci-lint(既定で無効)
- 日本語文体: colloquial-check(既定で無効)
- YAML / Dockerfile / シークレット系: yamllint(既定で無効)/ hadolint(Dockerfile、既定で無効)
- シークレット検出・SAST: gitleaks(既定で無効)/ semgrep(既定で無効)/ bandit(既定で無効)
- SQL: sqlfluff(既定で無効)
- 依存の脆弱性監査: uv-audit / pnpm-audit / npm-audit / yarn-audit(いずれも既定で無効)
- 統合: pre-commit(
.pre-commit-config.yamlのhookを統合実行)
既定で無効(opt-in)のツールは、利用時にpyproject.tomlで{command} = trueを設定する。
特記事項を以下に示す。
taplo: Rust製のTOMLフォーマッター/リンター。bin-runner経由で実行し、shfmtと同様の2段階実行(check→format)を行うyamllint: Python製のYAMLリンター。PATH上またはyamllint-pathで指定した実行ファイルを直接呼び出すhadolint: Dockerfileに特化したリンター。bin-runner経由で実行するgitleaks: Goバイナリのシークレット検出ツール。gitleaks detectでリポジトリ全体を対象に実行するsemgrep: Python製の多言語SAST。ルールセット指定が必須のため既定で無効。 利用時はsemgrep-args = ["scan", "--json", "--error", "--config=auto"]等で実際のルールセットを指定するsqlfluff: Python製のSQL専用linter。dialect指定が必須のため.sqlfluff配置を前提とする。sqlfluff lintサブコマンドをlinterとして起動する(sqlfluff formatサブコマンドは対象外)bandit: Python製のsource-level SAST。既定で無効(opt-in)。 検出された違反はtest_id(B101等)とseverity(LOW/MEDIUM/HIGH)で識別する。 起点cwd直下の設定ファイルを--configfile <絶対パス>形式でbanditへ渡す(bandit本体は自動読み込みしない)。 探索対象はpyproject.toml・.bandit.yaml・.bandit.toml。.bandit(INI形式)はbandit本体の--recursive時自動探索に委ねるglab-ci-lint:glab ci lint経由でGitLab CI設定を構文検証する。 GitLab API認証とネットワーク接続が必須なため、CIや初学者環境で誤って失敗しないよう既定で無効化しているuv-audit/pnpm-audit/npm-audit/yarn-audit: 依存パッケージの脆弱性を監査する。 それぞれパッケージマネージャーのauditサブコマンドを起動し、外部脆弱性データベースへの問い合わせを伴うため既定で無効colloquial-check: LLMが頻繁に出力する口語的な日本語表現を検出する内蔵linter。 既定で無効(opt-in)。有効化時もcolloquial-check-severity = "warning"既定により CI/pre-commitを失敗させない。対象ファイルは全種別(*)とし、pyfltr既定のexclude・.gitignore尊重に従う。 辞書ファイル(denylist・allowlist)はpyfltrに同梱する
プリセット指定と言語カテゴリゲートによる有効化の詳細は設定項目を参照。
個別に有効化・無効化する方法やpython-runner/js-runner/bin-runnerなどの補助設定は
設定項目(ツール別)を参照。
検索・置換機能¶
pyfltrは横断検索(grep)と置換(replace)も内蔵する。
pyfltr設定のexclude/extend-exclude/respect-gitignoreを尊重するため、
node_modulesやbuild配下のノイズが混入しない。
詳細は検索と置換を参照。
コンセプト¶
- 各種ツールをまとめて並列で呼び出し、実行時間を短縮する
- 各種ツールのバージョンには極力依存しない(各ツール固有の設定には対応しない)
- excludeの指定方法が各ツールで異なる問題を、pyfltr側で解決してツールに渡すことで吸収する
- formatterはファイルを修正しつつエラーとしても扱う(
pyfltr ciではformatterによる変更も失敗と判定する) - 設定は極力
pyproject.tomlに集約する