基于Code Linter实现代码检查

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

HarmonyOS
2024-07-24 10:21:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
NingJ

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

检查方法:

1. 编辑器自带Code Linter。

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

1. 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 // 对指定工程中的告警进行修复。

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

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

如何触发:

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

常见问题

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

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

Q:如何自定义规则。

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

Q:ArkTSCheck与codelinter区别。

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

分享
微博
QQ
微信
回复
2024-07-24 20:20:30
相关问题
Code Linter自定义代码规范
713浏览 • 1回复 待解决
code linter 校验return Promise<string>类型
1460浏览 • 1回复 待解决
自动化验收工具指南文档(Code Linter)
956浏览 • 1回复 待解决
基于AOP的代码插桩,都有哪些场景?
398浏览 • 1回复 待解决
基于JSVM创建引擎执行JS代码并销毁
128浏览 • 1回复 待解决
怎么基于Java实现视频播放?
2597浏览 • 1回复 待解决
基于tabs实现页面布局
385浏览 • 1回复 待解决
基于原生能力实现图文混排
147浏览 • 1回复 待解决
基于measure实现的文本测量
330浏览 • 1回复 待解决
基于原生实现高级显示效果
302浏览 • 1回复 待解决
基于ArkUI实现类似.9图的拉伸能力
194浏览 • 1回复 待解决
基于UI Observer实现UI组件埋点
168浏览 • 1回复 待解决
HarmonyOS 怎么检查内存泄漏
224浏览 • 1回复 待解决
基于@ohos.pasteboard实现剪贴板功能
177浏览 • 1回复 待解决
基于子窗口实现应用内悬浮窗
335浏览 • 1回复 待解决