🐷

textlint を用いた asciidoc の検査

2024/07/29に公開

textlint を用いた asciidoc の検査

概要

textlint は、markdown やテキストファイルの検査をするツールです。プラグインを使うことで、他形式のファイル(asciidoc など)を検査することができます。

具体的な実行方法と出力例

設定によって検出内容は変わりますが、例えば下記のような出力が得られます。

実行

npx textlint ./doc/**/*.adoc

結果

Sample.adoc:23:13:  Github =>  GitHub [Error/prh]
Sample.adoc:40:167: いい => よい [Error/prh]
Sample.adoc:40:187: 弱い表現: "かも" が使われています。 [Error/ja-technical-writing/ja-no-weak-phrase]
Sample.adoc:43:18: pull request => Pull Request [Error/prh]
Sample.adoc:44:9: は無い => はない [Error/prh]
Sample.adoc:55:39: かっこの外側、内側ともにスペースを入れません。 [Error/ja-spacing/ja-no-space-around-parentheses]
Sample.adoc:55:40: 文末が"。"で終わっていません。 [Error/ja-technical-writing/ja-no-mixed-period]
Sample.adoc:59:25: 一文に二回以上利用されている助詞 "は" がみつかりました。

導入

Node.js 上で動作するモジュールのため、Node の導入が必要です。
下記をざっと眺めて、実際にインストールなどをしてみてください。

関連リンク:入門及びインストール

設定

設定は .textlintrc.json に記述します。

設定例

  "rules": {
    "preset-ja-technical-writing": true,
    "preset-ja-spacing": {
      "ja-space-between-half-and-full-width": {
        "space": ["alphabets", "numbers"]
      },
      "ja-nakaguro-or-halfwidth-space-between-katakana": true,
      "ja-no-space-around-parentheses": true,
      "ja-no-space-between-full-width": true,
      "ja-space-around-code": {
        "before": true,
        "after": true
      }
    },
    "no-start-duplicated-conjunction": true,
    "no-surrogate-pair": true,
    "no-mixed-zenkaku-and-hankaku-alphabet": true,
    "ja-hiragana-fukushi": true,
    "ja-hiragana-hojodoushi": true,
    "@textlint-ja/textlint-rule-no-insert-dropping-sa": true,
    "prefer-tari-tari": true,
    "@textlint-ja/no-synonyms": true,
    "ja-no-orthographic-variants": true,
    "use-si-units": true,
    "no-hoso-kinshi-yogo": true,
    "ja-no-inappropriate-words": true,
    "prh": {
      "rulePaths": [
        "WEB+DB_PRESS+JCA.yml"
      ]
    }    
  }

参照している主な設定等

GitHub Actions を用いた Pull Request 自動検査

実行例

textlint 出力結果を reviewdoc に渡すことで、bot によるレビュー指摘ができます。
GitHub Actions の一部抜粋と出力例を示します。

run: |
npx textlint ./doc/**/*.adoc -f checkstyle -o ./.textlint_result.xml
if [ -e ./.textlint_result.xml ]; then
  # report by reviewdog
  cat ./.textlint_result.xml | reviewdog -f=checkstyle -name="textlint" -reporter=github-pr-review -level="warning"
fi

関連リンク:設定および CI による自動検査

Discussion