coc.nvim + coc-diagnostic + actionlintで GitHub Actions workflowを快適にlintできるようにしてみた

Workflowのチェックができるactionlintを公開された方がいたので、coc.nvimを通してneovim上で手軽にlintできるようにしてみました。
2021.07.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

GitHub Actions Workflowのlinterを公開された方がおられたので、ものは試しと業務で使っているWorkflowをチェック等していました。引っかかるところがチラホラ。

CICD上でのチェックを入れようと思いつつも、やっぱりエディタでの入力時に使えるのが一番です。既に導入済みのcoc.nvimとcoc-diagnosticを使って、nvim上で補完できるようにしてみました。

coc-diagnostic用の設定

特に注記する場所はありません。強いていえば args に忘れず -oneline をいれておくあたりです。

{
  "languageserver": {
    "dls": {
      "command": "diagnostic-languageserver",
      "args": ["--stdio"],
      "filetypes": ["yaml"],
      "initializationOptions": {
        "cacheDirectory": "/tmp/",
        "linters": {
          "actionlint": {
            "command": "actionlint",
            "rootPatterns": [],
            "debounce": 100,
            "isStdout": true,
            "isStderr": false,
            "offsetLine": 0,
            "offsetColumn": 0,
            "args": ["-oneline", "%relativepath"],
            "sourceName": "actionlint",
            "formatLines": 1,
            "formatPattern": [
              "^([^:]+):(\\d+):(\\d+):\\s+(.*)$",
              {
                "sourceName": 1,
                "sourceNameFilter": true,
                "line": 2,
                "column": 3,
                "endLine": 2,
                "endColumn": 3,
                "message": [4]
              }
            ],
            "parseJson": {
              "sourceName": "file",
              "sourceNameFilter": true,
              "line": "line",
              "column": "column",
              "endLine": "endLine",
              "endColumn": "endColumn",
              "message": "${message}"
            }
          }
        },
        "filetypes": {
          "yaml": "actionlint",
        }
      }
    }
  }
}

エラーを一覧で見たい場合は、:CocDiagnostics を使います。

あとがき

検証には手間どりましたが、ActionsのWorkflow実行でエラーになる部分の察知をneovim上で手軽に行えるようになりました。これで今までやらかしの多かったWorkflowのtypoも手間掛けずに減りそうなので一安心です。