t-yng / cspell-test

0 stars 0 forks source link

Github Actions でアノテーションをつける #3

Open t-yng opened 3 years ago

t-yng commented 3 years ago

やり方(候補)

出力をフォーマットする

https://github.com/actions/toolkit/blob/master/docs/problem-matchers.md

reviewdogを利用する

https://github.com/reviewdog/reviewdog

t-yng commented 3 years ago

出力のフォーマットの場合

出力のやり方に自由度が無く、少し複雑な正規表現を書く必要があるので、保守性が低くなる。

# check-spell.yml
name: check-spell
on: [ pull_request ]
jobs:
  check-spell:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "14.x"
      - name: Get yarn cache directory path
        id: yarn-cache-dir-path
        run: echo "::set-output name=dir::$(yarn cache dir)"
      - name: restore yarn cache
        uses: actions/cache@v2
        id: yarn-cache
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys:
            ${{ runner.os }}-yarn-
      - name: install dependencies
        run: yarn install
      - name: enable problem matcher
        run: |
          echo "::add-matcher::.github/check-spell-problem-matcher.json"
      - name: check spell
        run: yarn cspell index.ts
// check-spell-problem-matcher.json
{
  "problemMatcher": [
    {
      "owner": "spell-check",
      "pattern": [
        {
          "regexp": "^/.+/(.+?):(\\d+):.+ - (.+)",
          "file": 1,
          "line": 2,
          "message": 3
        }
      ]
    }
  ]
}
t-yng commented 3 years ago

reviewdog

Playgroundで抽出方法を試せる

.reviewdog.yml で実行コマンドとエラーフォーマットを制御できる

runner:
  cspell:
    cmd: yarn cspell index.ts
    errorformat:
      - "%f:%l:%c\ -\ %m"
    level: error
review dog -conf=./.github/conf/.reviewdog.yml -reporter=github-pr-check

filter-modeについて

-filter-mode を指定することで、どの修正に対して指摘コメントを付けるか制御ができる。 デフォルトは added になっており、PRに含まれる修正差分に対してだけ指摘される。 設定可能なモードは reporter とも関係している。

設定一覧と対応表はドキュメントを参照

t-yng commented 3 years ago

reviewdogでレビューコメントのフォーマットはできないので、もし「タイポ警察だ!」などのメッセージを含めたい場合は cspell の結果をフォーマットした内容を reviewdog に渡す必要がある。

/Users/tomohiro/workspace/playgournd/cspell-test/index.ts:1:7 - Unknown word (setsupport) => /Users/tomohiro/workspace/playgournd/cspell-test/index.ts:1:7 - タイポ警察だ!(改行)Unknown word (setsupport)

みたいなイメージ