Productivity Weeklyの記事を継続的に校正する
文章校正やテンプレの利用を自動化したい
文章校正はこちらを参考にする
textlint周りのパッケージをインスコ
npm i -D textlint textlint-rule-preset-ja-technical-writing textlint-rule-preset-ja-spacing textlint-rule-spellcheck-tech-word
設定ファイルは一旦上の記事からパクリ
{
"plugins": {
"@textlint/markdown": {
"extensions": [".md"]
}
},
"rules": {
"preset-ja-technical-writing": {
"no-exclamation-question-mark": {
"allowFullWidthExclamation": true,
"allowFullWidthQuestion": true
},
"no-doubled-joshi": {
"strict": false,
"allow": ["か"] // 助詞のうち「か」は複数回の出現を許す(e.g.: するかどうか)
}
},
"preset-ja-spacing": {
"ja-space-between-half-and-full-width": {
"space": "always",
"exceptPunctuation": true
},
"ja-space-around-code": {
"before": true,
"after": true
}
},
"ja-technical-writing/ja-no-mixed-period": {
"allowPeriodMarks": [":"]
},
"ja-technical-writing/sentence-length": false //100文字数制限の無効化
}
}
拡張機能のvscode-textlintをインストール
したが、すでに動いている.md
しか問題を検出してくれない
明示的にconfigPath
とnodePath
を設定したらなんとかなった
{
"textlint.configPath": "./.textlintrc",
"textlint.nodePath": "./node_modules"
}
tsuyoshicho/action-textlint を使ってtextlintをCIに載せる
とりあえずREADMEの設定を(一部変更して)持ってくる
name: ci
on: [pull_request]
jobs:
textlint:
name: textlint
runs-on: ubuntu-latest
env:
ARTICLES_PATH: articles
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
- name: textlint-github-pr-check
uses: tsuyoshicho/action-textlint@v3
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-check
textlint_flags: "${{ env.ARTICLES_PATH }}/**"
- name: textlint-github-check
uses: tsuyoshicho/action-textlint@v3
with:
github_token: ${{ secrets.github_token }}
reporter: github-check
textlint_flags: "${{ env.ARTICLES_PATH }}/**"
- name: textlint-github-pr-review
uses: tsuyoshicho/action-textlint@v3
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-review
textlint_flags: "${{ env.ARTICLES_PATH }}/**"
動かした結果 https://github.com/korosuke613/zenn-articles/actions/runs/583798426
reporter: github-pr-check
、reporter: github-check
、reporter: github-pr-review
の違いがわからない。
一個ずつ動かしてみる
reporter: github-pr-check
の結果。 https://github.com/korosuke613/zenn-articles/actions/runs/583816933
reviewdogがコメントを吐くが、プルリクエスト自体にはコメントなし
reporter: github-check
の結果 https://github.com/korosuke613/zenn-articles/actions/runs/583822660
reporter: github-pr-check
と同じように見える
多分昔はreporter: github-pr-check
があったんだろうけど今はgithub-check
とgithub-pr-review
しかないんだ。コード読んでわかった
Reporter of reviewdog command [github-check,github-pr-review].
https://github.com/tsuyoshicho/action-textlint/blob/3f4d0b962e65dde93bd790e8fbc1b33bc358694c/action.yml#L14
おそらく、以下のような感じ
-
github-check
: textlintによるチェックをWorkflowの結果に表示する。 -
github-pr-review
: textlintによるチェックをWorkflowの結果に表示する。さらに修正をコードコメントに載せる。
というわけでgithub-pr-review
を採用
うんともすんとも言わなくなったぞ??と思ったらtypoしてた
Warning: Unexpected input(s) 'lebel', valid inputs are ['github_token', 'level', 'reporter', 'filter_mode', 'fail_on_error', 'reviewdog_flags', 'textlint_flags', 'tool_name']
https://github.com/korosuke613/zenn-articles/pull/11/checks?check_run_id=1941078346#step:4:1
level: warning
にしたところコメントしてくれなくなった... https://github.com/korosuke613/zenn-articles/pull/11/checks?check_run_id=1941094349
level: info
だとコメントしてくれるな... https://github.com/korosuke613/zenn-articles/actions/runs/583879462
github actionsのステータスにwarning相当のものがないってこと?
えっなにこれは
Hello future GitHubber! I bet you're here to remove those nasty inline styles, DRY up these templates and make 'em nice and re-usable, right? Please, don't.
https://github.com/korosuke613/zenn-articles/runs/1941163641?check_suite_focus=true#step:4:39
うーんreporter: github-pr-review
だとlevel: info
でも教えてくれない...
とりあえずlevel: error
にするか
あれ?5分前に来てる...
もしかしてgithub-pr-reviewだけだとコードコメントしかしてくれないのか
やっぱgithub-check
も併用した方が良さそう
ようやくやりたいことができた。このままだとキャッシュが効かないのでキャッシュを効かせる
name: ci
on: [pull_request]
jobs:
textlint:
name: textlint
runs-on: ubuntu-latest
env:
ARTICLES_PATH: articles
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
- name: textlint-github-check
uses: tsuyoshicho/action-textlint@v3
with:
github_token: ${{ secrets.github_token }}
level: warning
reporter: github-check
textlint_flags: "${{ env.ARTICLES_PATH }}/**"
- name: textlint-github-pr-review
uses: tsuyoshicho/action-textlint@v3
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-review
textlint_flags: "${{ env.ARTICLES_PATH }}/**"
キャッシュなし 52s https://github.com/korosuke613/zenn-articles/runs/1941286433?check_suite_focus=true
キャッシュあり 1m51s https://github.com/korosuke613/zenn-articles/runs/1941296041?check_suite_focus=true
えっ
まさかのキャッシュ効かせた方が遅い...
issueがあった
Github action cache is really slow - Code to Cloud / GitHub Actions - GitHub Support Community
でもv2で早くなったとのこと。俺もv2
再度pushしたら早くなった 31s https://github.com/korosuke613/zenn-articles/runs/1941319062?check_suite_focus=true
初回は遅いのかな?場合によっては遅い時があるのかも
とりあえずキャッシュは効かせる方向でいいか
templateはarticles下にないからそれも見るようにしたい
textlint_flags: "${{ env.ARTICLES_PATH }}/**/**"
⇦これで行けた
完成〜マージした〜
これで俺の日本語がマシになる
/Users/korosuke613/Program/korosuke613-zenn/articles/productivity-weekly-20210224.md
35:13 error 漢字が7つ以上連続しています: 技術者資格制度 ja-technical-writing/max-kanji-continuous-len
「ISTQBテスト技術者資格制度」で怒られているらしい。このルールは無効にしようかな
allow
に許可したい文字列を入れるとその文字列はこのルールから除外される。以下のような設定を行った。
"ja-technical-writing/max-kanji-continuous-len": {
// 連続できる漢字の文字数制限
"allow": ["技術者資格制度"]
}
textlint-filter-rule-allowlistとやらもあるらしい。こっちはもっと全般的に除外単語設定ができるのかな
今の設定だと同じ行で同じルール違反が複数個あってもその数だけコメント来てちょっと嫌になるな...
同じ行で同じルール違反だとコメントは1個だけにするみたいなのないかな https://github.com/korosuke613/zenn-articles/pull/13