日本語の文章、コードのコメント・静的な文言から「AI 臭さ」を機械的に拾う Rust 製の Linter
料金は100円です。
")); let after = engine.lint(Document::plain_text("料金は200円です。")); let comparison = noslop::diff::compare(&engine, before, after)?; ``` Markdown 内の HTML 本文も検査し、見出し・リスト・表・引用と原文の位置を保ちます。辞書は同梱しません。辞書がなければ近似で判定し、手元の辞書を使う場合は `EngineOptions::morphology` で指定します。 | feature | 有効になる機能 | |---|---| | `code` | コードのコメント・静的な文言の検査(全言語の tree-sitter 文法)| | `dictionary-download` | 配布辞書の取得・検証・一覧 | | `cli` | CLI・MCP・フック・シェル連携・レビュー。`code` と `dictionary-download` も有効にする | | `bundled-dict` | 準備済みの辞書を同梱する。ソースからビルドする前に `make dict-bundled` が必要 | 既定は `cli` と `bundled-dict` で、配布する CLI の機能はすべて有効です。ライブラリでも `features = ["code"]` などで必要な機能を加えられます。入力形式は feature にかかわらず同じです。`code` を外してコードを指定すると、`Document::try_parse`・`Engine::try_lint_source`・`Engine::run` は誤りを返します。`Document::parse` と `Engine::lint_source` は、未対応の形式を指定すると panic するため、形式が実行時に決まる場合は `try_` の API を使ってください。 ## 開発 [mise](https://mise.jdx.dev/) が必要です。ツールの版は `mise.toml` で固定しています。 ```bash make setup # ツールチェーン (mise)・依存・同梱辞書を取得する make ci # CI と同じ検査 (書き換えない) ``` | コマンド | 説明 | |---|---| | `make setup` | ツールチェーン (mise)・依存・同梱辞書を取得する | | `make build` | デバッグ版をビルドする | | `make release` | リリース版をビルドする | | `make run` | デバッグ版を実行する (引数は ARGS="...") | | `make test` | テストを実行する | | `make test-no-default-features` | 文書用ライブラリだけでテストする (--no-default-features) | | `make test-no-bundled-dict` | 辞書を同梱しない CLI でテストする | | `make test-library` | ライブラリの feature ごとに clippy とテストを実行する | | `make test-embedding` | 別の tree-sitter を使うアプリへの組み込みを確かめる | | `make lint` | clippy を警告ゼロで通す | | `make fmt` | コードを整形する (書き換える) | | `make fmt-check` | 整形済みかを確かめる (書き換えない) | | `make check` | 整形と静的検査 (書き換えない) | | `make ci` | CI と同じ検査 (書き換えない) | | `make install` | リリース版を INSTALL_PATH (既定 /usr/local/bin) に入れる | | `make uninstall` | INSTALL_PATH から取り除く | | `make clean` | ビルド成果物を消す | | `make dict-bundled` | 固定情報に合う同梱辞書を準備する (取得済みなら照合だけ) | | `make dict-bundled-update` | 同梱辞書の固定情報と表示を、依存の hasami のリリースに更新する | | `make hasami-update` | 依存の hasami を TAG の版 (省くと最新のリリース) に上げ、同梱の辞書も同じリリースにそろえる | `make` でターゲットの一覧を表示します。リリースは GitHub Actions で行います (**Actions → Release → Run workflow**)。 辞書を同梱しないビルドのテスト、ルール一覧の再生成、辞書目録の検証、リリースの仕組みとロードマップは [開発とリリース](docs/development.md) を参照してください。 ## ライセンス [MIT](LICENSE) noslop のルール体系・語句カタログ・閾値の一部は、MIT ライセンスで公開されている日本語の文章作法プロジェクトに由来します。著作権表示とライセンス全文は [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) にあります。 文分割には、日本語の形態素解析器 [hasami](https://github.com/owayo/hasami)(MIT)の辞書を使わない文分割を使っています。hasami が組み込む例外表(文末記号を含む語の一覧)は、SudachiDict などの辞書データから抽出しています。出典と著作権表示は [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) にあります。 既定のバイナリ(feature `bundled-dict`)には、hasami が mecab-ipadic から作った形態素解析の辞書を同梱しています。mecab-ipadic のライセンス(NAIST-2003)の条文は [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) に、辞書の出所は [dict/README.md](dict/README.md) にあります。