arkts-code-linter
SKILL.md
ArkTS Code Linter - HarmonyOS NEXT 规范检查工具
功能概述
本工具基于 华为 HarmonyOS NEXT 官方开发文档 和项目规范,提供全面的 ArkTS 代码检查功能。
核心检查规则
1. 语言规范检查 (强制)
1.1 严格类型安全
- 禁止
any类型:所有变量和函数返回值必须显式声明类型 - 禁止
unknown类型:特殊情况需添加注释说明 - 空安全检查:必须处理
null和undefined - ESObject 使用规范:仅在与 JS 库交互时使用,使用后立即转换
1.2 语法限制
- 类字段初始化:必须在声明时或构造函数中初始化
- 模块化规范:使用 ES6
import/export,禁止 CommonJSrequire - 类型声明:禁止内联对象字面量作为类型,必须使用具名
interface/type - JSON 解析:
JSON.parse()后必须转为显式结构类型
2. ArkUI 开发规范
2.1 组件化设计
- 装饰器检查:
@Component、@Entry使用规范 - Builder 语法:
@Builder内禁止return早退和普通语句块 - 组件拆分:单个文件不超过 500 行
2.2 状态管理
- 装饰器选择:
@State、@Prop、@Link、@Provide/@Consume正确使用 - 状态更新:必须通过赋值更新,禁止直接修改对象属性
2.3 布局与样式
- 单位规范:使用
vp/fp,禁止硬编码px - 布局性能:减少
Stack/Flex嵌套,优先使用RelativeContainer - 列表渲染:必须使用
LazyForEach并提供唯一keyGenerator
3. 性能优化检查
3.1 渲染性能
- LazyForEach:长列表必须使用懒加载
- 条件渲染:频繁切换使用
visibility而非if/else - 图片优化:大图使用
sourceSize属性
3.2 并发与异步
- 主线程减负:耗时操作移至
TaskPool或Worker - 异步规范:使用 Promise 或 async/await
3.3 内存管理
- 资源释放:
aboutToDisappear中注销监听和定时器 - 上下文泄漏:禁止持有
AbilityContext或 UI 组件引用
4. 项目架构规范
4.1 目录结构
entry/src/main/ets/
├── pages/ # 页面入口 (@Entry)
├── components/ # 公共 UI 组件
├── model/ # 数据模型
├── utils/ # 工具类
├── service/ # 业务逻辑服务
└── resources/ # 静态资源
4.2 命名规范
- 类/接口/组件:PascalCase
- 变量/函数:camelCase
- 常量/枚举:UPPER_SNAKE_CASE
使用方法
命令行检查
# 检查单个文件
arkts-linter check src/main/ets/pages/Index.ets
# 检查整个目录
arkts-linter check src/main/ets/
# 自动修复可修复的问题
arkts-linter fix src/main/ets/pages/Index.ets
配置规则
在项目根目录创建 .arktslintrc.json:
{
"rules": {
"no-any": "error",
"no-unknown": "error",
"static-method-this": "error",
"component-syntax": "error",
"indent": ["error", 2],
"naming-convention": "error",
"proper-decorator-use": "error",
"component-root-node": "error",
"state-management": "warning",
"lazy-for-each": "error",
"no-px-unit": "error",
"use-vp-fp": "error"
},
"ignore": [
"node_modules/**",
"build/**",
"oh_modules/**",
"*.test.ets"
]
}
规则说明
| 规则名称 | 描述 | 严重程度 | 可修复 |
|---|---|---|---|
| no-any | 禁止使用 any 类型 | error | false |
| no-unknown | 禁止使用 unknown 类型 | error | false |
| static-method-this | 静态方法中禁止使用 this | error | true |
| no-untyped-objects | 禁止无类型对象字面量 | error | false |
| component-syntax | 组件语法规范检查 | error | false |
| proper-decorator-use | 装饰器正确使用 | error | false |
| component-root-node | 组件根节点规则 | error | false |
| state-management | 状态管理最佳实践 | warning | false |
| lazy-for-each | 列表必须使用 LazyForEach | error | false |
| no-px-unit | 禁止硬编码 px 单位 | error | true |
| use-vp-fp | 必须使用 vp/fp 单位 | error | true |
| indent | 缩进规范 | error | true |
| naming-convention | 命名规范检查 | error | false |
忽略特定代码
// 忽略单行
// @arktslint-ignore no-any
const data: any = getData();
// 忽略多行
// @arktslint-ignore no-any, no-unknown
const data: any = getData();
const info: unknown = getInfo();
// 忽略整个文件
// @arktslint-ignore-file
参考文档
许可证
MIT License
Weekly Installs
8
Repository
clmc2025/vignetteFirst Seen
Jan 29, 2026
Security Audits
Installed on
gemini-cli8
github-copilot7
codex7
kimi-cli7
cursor7
amp7