Language server 与 linter 集成

2019-03-17 18:34:17 +08:00
 yuuko

diagnostic-languageserver 是一个可以与大多数的 linter 集成的 LSP 服务。

安装:

yarn global add diagnostic-languageserver

language server 对大多数的语言支持已经很完善了,但是还是有些语言没有或者是支持的比较差,比如 viml,shell 等,还是少不了使用 linter 来检查代码。所以基本都会安装一个插件,比如:ale

不过既然 LSP 已经自带了代码检查,为什么不用 LSP 和 linter 集成?受 efm-langserver 启发,然后就有了这个项目。

下面是 shellcheck linter 配置示例,LSP 客户端使用的是 coc.nvim(你也可以选其他客户端)

coc-settings.json:

{
  "languageserver": {
    "dls": {
      "command": "diagnostic-languageserver",
      "args": ["--stdio"],
      "filetypes": [ "sh" ],
      "initializationOptions": {
        "linters": {
          "shellcheck": {
            "command": "shellcheck",
            "debounce": 100,
            "args": [ "--format=gcc", "-"],
            "offsetLine": 0,
            "offsetColumn": 0,
            "sourceName": "shellcheck",
            "formatLines": 1,
            "formatPattern": [
              "^[^:]+:(\\d+):(\\d+):\\s+([^:]+):\\s+(.*)$",
              {
                "line": 1,
                "column": 2,
                "message": 4,
                "security": 3
              }
            ],
            "securities": {
              "error": "error",
              "warning": "warning",
              "note": "info"
            }
          },
        },
        "filetypes": {
          "sh": "shellcheck"
        }
      }
    }
  }
}

更多配置可以看 github

3361 次点击
所在节点    Vim
5 条回复
Sparetire
2019-03-17 20:51:26 +08:00
支持一下
fannheyward
2019-03-18 10:26:03 +08:00
和 efm-langserver 主要的异同或者优势是什么?
yuuko
2019-03-18 11:30:32 +08:00
@fannheyward

优势:

1. 使用正则更灵活可以适配更多的 linter,比如 languagetool 这种输出每个 issue 是多行的,而且 提示信息可以自由分割组合。

2. 支持 security 分级( error, warning, info, hint),当然这个也得 linter 支持。

3. 特别适配了下本地 linter,比如 eslint, 配置命令是 `./node_modules/.bin/eslint` 这种相对路径开头的,会先找本地安装的 eslint,找不到再用 全局的。

efm 的优势:他还提供 format command 配置支持

本来是打算向 efm 提 pr 的,无奈我 go 太菜
yech1990
2019-03-18 22:32:03 +08:00
pylint 呢?
yuuko
2019-03-19 11:41:43 +08:00
@yech1990 pylint 2.4 版本之前不支持 stdin 或者是参数形式传入,所以还不支持,支持之后发布的 2.4 版本

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/545529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX