当程序规模扩大, 多个人协同工作时, 问题出现了:

分别解决什么问题?

linter: 静态代码审查员

它不执行程序, 只 ” 通过 ” 看代码来提前发现问题. 它会检查

  • 语法层面的问题

  • 潜在 bug

  • 未使用变量

  • 重复导入

  • 不推荐的写法

  • 风格规范问题

    import os
    import sys
     
    def add(a,b):
        c = a + b
        return a+b
     
    print(add(1,2))

这里可能有几个问题:

  1. os 和 sys 没被使用
  2. c 赋值后没使用
  3. a,b 中间缺空格

formatter: 统一代码格式

团队开发中, 有很多分歧其实没有业务价值, 如:

  • 逗号后面加不加空格
  • 一行最多写多少字符
  • 列表换不换行
  • 括号怎么摆
  • 引号统一单引号还是双引号

这些问题会消耗很多协作成本, 但对程序功能没有本质贡献

所以 formatter 的作用是:

  • 自动调整空格, 缩进, 换行
  • 统一代码布局
  • 让所有人的代码长得更像同一个人写的
维度LinterFormatter
关注点代码是否 ” 正确/合规 “代码是否 ” 美观/一致 “
动作警告 (Warning)重写 (Rewrite)
判断逻辑基于规则库 (如: 变量名是否过短)基于一套硬性排版准则
失败后果发现潜在 bug导致代码排版不整齐

language server