鸿蒙开发5.0【Code Linter实现代码检查】

news2024/11/15 19:35:31

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

检查方法:

  1. 编辑器自带Code Linter。

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

    1

  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文件,使用非驼峰方法命名类名。

2

使用codelinter检测。

3

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

4

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

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

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

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

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

5

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

步骤:

  1. 按上述步骤配置完commandline tools工具。

  2. 在非工程根目录下使用命令行工具:

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

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

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

如何触发:

在流水线构建命令前,插入上述执行脚本即可

6

常见问题

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

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

Q:如何自定义规则。

A:当前不支持自定义规则,必须官网已经适配的现有规则。

Q:ArkTSCheck与codelinter区别。

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

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
1

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

2

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!
3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年医疗器械企业5款CRM系统对比评测

医疗器械行业是一个多学科交叉、知识密集型、资金密集型的高新技术产业,进入门槛较高,产品种类繁多,技术含量较高。 随着医改的深入推进,医疗器械集采常态化成为行业新常态,中国的医疗器械行业不仅面临着巨大的市场潜…

zabbix6.4配置监控k8s 1.28集群

zabbix6.4配置监控rke2 rancher k8s集群 1. 说明1.1 为什么要使用zabbix6.x监控k8s1.2 部署环境1.3 部署前的一些问题 2. 使用helm3部署zabbix proxy和zabbix agent2.1 添加仓库2.2 修改配置2.3 部署2.4 确认部署情况 3. 在zabbix web页面配置连接zabbix proxy3.1 添加Proxy代理…

kali (linux) 配置windows远程桌面(mstsc.exe)连接

Kali 安装 tightvncserver 一、软件说明 1) tightvncserver是一个轻量级,只能建立桌面,不能查看TTY7/TTY1正在显示的桌面,但x11vnc可以,相比x11vnc安全传输差一些。反之,x11 vnc:安全传输较好,但占用资源比 tightvncs…

PB级内存计算项目实战-富华保险

一、保险项目的基本介绍 项目名称:富华阳光人寿保险 1. 行业背景介绍 在保险行业中,最为核心技术就是精算,精算简单来说就是根据人的年龄来计算应交保费问题,通过精算,让整个保险行业更加专业化,精细化 从而取代之间依靠经验判断的方式 精算到目前为止,并不仅仅计算保费,主要包…

Leetcode 1143. 最长公共子序列 记忆化搜索 优化 C++实现

Leetcode 1143. 最长公共子序列 问题:给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对…

一体化智能电动窗帘:开启智能生活新时尚

史新华 在科技不断进步的今天,人们对生活品质的追求也越来越高。电动窗帘作为智能家居的重要组成部分,以其便捷、智能、时尚的特点,正逐渐走进千家万户。 添加图片注释,不超过 140 字(可选) 一、电动窗帘…

KEYSIGHT U2020 X系列 USB峰值和均值功率传感器

​ _是德(KEYSIGHT) _ U2020 X系列 USB峰值和均值功率传感器 苏州新利通仪器仪表 U2020 X 系列功率传感器得到 Keysight BenchVue 软件的支持。使用 BenchVue 软件,您无需编程便可轻松控制功率计记录数据,并以各种形式显示测量结果。 只需将传感器…

AI大模型与量子纠缠理论的结合,以及相关应用思考

大家好,我是微学AI,今天给大家介绍一下AI大模型与量子纠缠理论的结合,以及相关应用思考。将大模型(LLM)的基本原理与量子纠缠理论相结合是一个高度抽象的概念。我们首先需要理解这两个领域的基本原理,然后探…

#ARM开发 笔记

课程介绍 ARM开发 --> Linux移植 --> 驱动开发 前后联系:ARM和系统移植为驱动开发学习做准备工作 所需知识:C语言基础及STM32需要的硬件知识 学习方法 学习流程、思想和解决问题的方法即可 知道驱动的基本框架以及基本开发要求 底层课程导学 接口技…

NTFS安全权限和文件共享

一.常见文件系统 NTFS 描述: Windows最常使用的文件系统(New Technology File System)微软公司开发的一种专用于 Windows 操作系统的文件系统。 特点: 效率性 可以提高磁盘的读写性能; 可靠性 加密文件系统访问控制列…

Vue组件:使用Prop实现父组件向子组件传递数据

1、Prop 基本用法 由于组件实例的作用域是孤立的,因此子组件的模板无法直接应用父组件的数据。如果想要通过父组件向子组件传递数据,就需要定义 Prop。Prop 是父组件用来传递数据的一个自定义属性,这样的属性需要定义在组件选项对象的 props…

并发集合(二):CopyOnWriteArrayList

1、CopyOnWriteArrayList介绍 CopyOnWriteArrayList 是一个线程安全的ArrayList。 CopyOnWriteArrayList 是基于Lock锁和线程副本的形式来保证线程安全的, 在写数据时,先获取Lock锁,然后复制一个副本,添加数据时&…

Delphi7实现Json对象的序列化与反序列化

在高版本的 Delphi 中,实现序列化和反序列化非常简单。然而,在 Delphi 7 中,这个过程仍然需要一些额外的努力。为了简化这个问题,我花了一些时间封装了一个支持序列化和反序列化的 JSON 解析库。 type{$M}TStartupParameters cla…

MySQL的服务器与客户端:架构解析与实践

文章目录 MySQL的服务器和客户端服务端处理客户端请求连接管理解析与优化查询缓存语法解析查询优化 存储引擎不同的存储引擎查看支持的存储引擎为不同的表设置存储引擎 MySQL是一个广泛使用的开源关系数据库管理系统,其核心架构由服务器端和客户端两大部分组成。本文…

9/3 链表-力扣160 、203、206

160.相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函…

CUDA-MODE课程笔记 第9课: 归约(也对应PMPP的第10章)

我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE课程笔记 第9课: 归约(也对应PMPP的第10章) 课程笔记 本节课的题目。 这节课的内容主要是 Chapter 10 of PMPP …

TCP连接重置,到底怎么回事?还是得网工大佬来分析!

来源:科来。 连接建立失败并不仅仅包含无响应问题,还有一种常见的情况,即RST(Reset)包的发送。RST包是TCP协议中用来进行“连接重置”的数据包,本文将围绕RST包进行详细展开讨论。 TCP连接中为何会有RST包…

VideoCrafter1:Open Diffusion models for high-quality video generation

https://zhuanlan.zhihu.com/p/677918122https://zhuanlan.zhihu.com/p/677918122 视频生成无论是文生视频,还是图生视频,图生视频这块普遍的操作还是将图片作为一个模态crossattention进unet进行去噪,这一步是需要训练的,svd除此之外,还将图片和noise做拼接,这一步,很…

【压测】ab命令

安装 sudo yum install httpd-toolssudo apt update sudo apt install apache2-utils介绍 ab:参数数量错误 用法:ab [选项] [http[s]://]主机名[:端口]/路径 选项包括: -n 请求次数 执行的请求数 -c 并发数 同时发起的多个请求数量 -t 时间…

springboot博客系统

基于springbootvue实现的博客系统 (源码L文ppt)4-031 4 系统设计 博客系统的整体结构设计主要分为两大部分:管理员和博主。他们的权限不同,于是操作功能也有所不同。整体结构设计如图4-2所示。 图4-2 系统结构图 4.3 数据库设…