基于Code Linter实现代码检查

Code Linter针对ArkTS/TS代码进行最佳实践/编程规范方面的检查。

检查方法:

1.编辑器自带Code Linter。

在已打开的代码编辑器窗口单击右键点击Code Linter,或在工程管理窗口中鼠标选中单个或多个工程文件/目录,右键选择Code Linter执行代码检查。

2.Code Linter命令行。

Code Linter同时支持使用命令行执行代码检查与修复,可将Code Linter工具集成到门禁或持续集成环境中。

获取:请在获取命令行工具下载CommandLine。

配置:命令行工具需要解压工具包,将bin目录配置到配置完环境变量才能使用。

场景一:配置规则增加删除

配置步骤:

在工程根目录下创建code-linter.json5配置文件,可对于代码检查的范围及对应生效的检查规则进行配置,ruleSet和rules配置项共同确定了生效的规则范围。具体配置项功能示例如下:

注:需要使用官网自带的规则,不支持自定义。

对类名Foo的命名风格校验:

"ruleSet":
[
  //快捷批量引入的规则集, 枚举类型:plugin:@typescript-eslint/all, plugin:@typescript-eslint/recommended, plugin:@cross-device-app-dev/all, plugin:@cross-device-app-dev/recommended等
  "plugin:@typescript-eslint/recommended"
],
//可以对ruleSet配置的规则集中特定的某些规则进行修改、去使能, 或者新增规则集以外的规则;ruleSet和rules共同确定了代码检查所应用的规则
"rules":
{
  "@typescript-eslint/naming-convention": [
    "error",
    {
      // selector属性必选,配置要检查的语法,这里配置的class表示检查自定义组件名
      "selector": "class",
      // format属性必选,配置期望的命名风格,支持枚举值,这里配置的PascalCase表示大驼峰风格
      "format": ["PascalCase"],
      // custom属性可选,配置用户自定义的命名风格
      "custom": {
        // regex属性必选,配置具体的正则
        "regex": "^[a-zA-Z]+$",
        // match属性必选,配置为true表示正则未命中时报错;配置为false表示正则命中时报错
        "match": true
      }
    }
  ]
}

效果:

新建test.ets文件,使用非驼峰方法命名类名。

使用codelinter检测。

场景二:指定代码检查范围

如果只想检查test.ets文件:

配置步骤:通过配置"file"和"ignore"字段来指定需要检测的文件类型和忽略检测的文件。

//用于表示配置适用的文件范围的 glob 模式数组。在没有指定的情况下,应用默认配置
"files": [
//字符串类型
  "**/*.js",
  "**/*.ts"
],
//一个表示配置对象不应适用的文件的 glob 模式数组。如果没有指定,配置对象将适用于所有由 files 匹配的文件
"ignore": [
//字符串类型
  "build/**/*",
  "node_modules/**/*"
],

说明:当前指定目录是以模块根路径为绝对路径指定,不支持绝对路径。

效果:codelinter根据通配符在每个模块下按**/test.ets匹配文件。

场景三:将codelinter集成到流水线

步骤:

  1. 按上述步骤配置完commandline tools工具。
  2. 在非工程根目录下使用命令行工具:

codelinter [dir] /*[dir]指定执行检查的工程根目录,*/ -c filepath [dir]/*指定执行检查的规则配置文件位置,*/ --fix // 对指定工程中的告警进行修复。

  1. 保存指定代码检查结果,默认放在命令行工具文件夹result文件下。

codelinter -o filepath2 // filepath2为指定存放代码检查结果的文件路径。

如何触发:

在流水线构建命令前,插入上述执行脚本即可,参考文档:搭建流水线

常见问题

Q:命令工具如何指定具体文件进行检查。

A:当前指定目录是以模块根路径为绝对路径指定,不支持绝对路径。

Q:如何自定义规则。

A:当前不支持自定义规则,必须官网已经适配的现有规则。参考文档:Code Linter代码检查规则

Q:ArkTSCheck与codelinter区别。

A:codelinter检查的结果一般不会影响编译,用户不修改也没关系;ArkTscheck一般是语法规范类的检查,会影响编译,这两个是不同方面的检查,检查规则不一样。codelinter检查的结果,用户可以选择不改,又或者不想检查出来,就可以/* eslint-disable */屏蔽,但只能屏蔽有Ignore图标的。若扫描结果中出现误报,单条告警结果后的有Ignore图标,可以屏蔽若检查规则后存在warning图标,表明此处存在ArkTS语法规范问题。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值