HarmonyOS应用《玄象》开发实战:code-linter.json5 配置:ArkTS 严格模式下的代码规范
阅读时长约 17 分钟 | 难度★★★☆☆ | 篇章第 1 篇 · 项目架构与设计哲学对应源码xuanxiang_ohos_app/code-linter.json5、xuanxiang_ohos_app/entry/build-profile.json5前言在团队协作与代码质量保证中静态代码检查是不可或缺的一环。HarmonyOS 提供了官方的代码检查工具code-linter它基于 TypeScript ESLint 引擎扩展而来专门为 ArkTS 语言特性设计。玄象项目通过code-linter.json5配置文件启用了性能规则集、TypeScript 规则集与安全规则集三大维度确保 45 个.ets文件在性能、类型安全、密码学安全三个层面均符合最佳实践。本篇将深入剖析玄象项目的code-linter.json5配置让您掌握在 ArkTS 项目中实施工业级代码规范的方法。提示code-linter 的安全规则集如security/no-unsafe-aes是 HarmonyOS 区别于普通前端 ESLint 配置的核心特性直接关系到应用上架审核。一、code-linter.json5 全貌1.1 完整配置{ files: [ **/*.ets ], ignore: [ **/src/ohosTest/**/*, **/src/test/**/*, **/src/mock/**/*, **/node_modules/**/*, **/oh_modules/**/*, **/build/**/*, **/.preview/**/* ], ruleSet: [ plugin:performance/recommended, plugin:typescript-eslint/recommended ], rules: { security/no-unsafe-aes: error, security/no-unsafe-hash: error, security/no-unsafe-mac: warn, security/no-unsafe-dh: error, security/no-unsafe-dsa: error, security/no-unsafe-ecdsa: error, security/no-unsafe-rsa-encrypt: error, security/no-unsafe-rsa-sign: error, security/no-unsafe-rsa-key: error, security/no-unsafe-dsa-key: error, security/no-unsafe-dh-key: error, security/no-unsafe-3des: error } }1.2 配置结构解析code-linter.json5的配置分为四大块字段类型作用filesstring[]检查文件范围ignorestring[]忽略文件范围ruleSetstring[]启用的规则集rulesobject单条规则覆盖二、files 与 ignore检查范围控制2.1 files 字段files: [ **/*.ets ]玄象项目检查所有.ets文件。**/*.ets是 glob 通配符**匹配任意层目录*.ets匹配所有 .ets 后缀文件2.2 ignore 字段ignore: [ **/src/ohosTest/**/*, **/src/test/**/*, **/src/mock/**/*, **/node_modules/**/*, **/oh_modules/**/*, **/build/**/*, **/.preview/**/* ]玄象项目忽略以下目录目录忽略理由src/ohosTest/**仪器化测试代码src/test/**单元测试代码src/mock/**Mock 数据node_modules/**第三方依赖oh_modules/**HarmonyOS 依赖build/**构建产物.preview/**预览缓存提示忽略build/**与oh_modules/**是性能优化的关键。这两类目录文件数量巨大纳入检查会显著拖慢 lint 速度。三、ruleSet启用的规则集3.1 性能规则集plugin:performance/recommendedperformance/recommended是 HarmonyOS 官方提供的性能优化规则集主要检查规则检查内容performance/no-uninstantiated-objects未实例化对象检测performance/no-async-in-for-eachforEach 中禁止异步performance/no-large-object-in-stateState 中禁止大对象performance/no-broad-foreachforEach 范围过大检测performance/no-complex-builderBuilder 复杂度检测3.2 TypeScript 规则集plugin:typescript-eslint/recommendedtypescript-eslint/recommended是 TypeScript 官方推荐规则集主要检查规则检查内容typescript-eslint/no-explicit-any禁止使用 any 类型typescript-eslint/no-unused-vars检测未使用的变量typescript-eslint/no-non-null-assertion禁止非空断言typescript-eslint/explicit-function-return-type函数返回值类型标注typescript-eslint/no-inferrable-types可推断类型无需显式标注3.3 玄象项目规则集选择策略玄象项目选择performance/recommendedtypescript-eslint/recommended的组合策略性能优先HarmonyOS 应用对启动性能、内存占用敏感性能规则集是必备。类型安全ArkTS 是 TypeScript 的方言类型安全规则保证代码可维护性。避免冗余未启用style/recommended等代码风格规则集避免与团队约定冲突。提示玄象项目当前未启用arkui/recommended规则集专门检查 ArkUI 组件规范。若团队规模扩大可启用该规则集强化 ArkUI 写法约束。四、rules安全规则集深度剖析4.1 密码学安全规则总览rules: { security/no-unsafe-aes: error, security/no-unsafe-hash: error, security/no-unsafe-mac: warn, security/no-unsafe-dh: error, security/no-unsafe-dsa: error, security/no-unsafe-ecdsa: error, security/no-unsafe-rsa-encrypt: error, security/no-unsafe-rsa-sign: error, security/no-unsafe-rsa-key: error, security/no-unsafe-dsa-key: error, security/no-unsafe-dh-key: error, security/no-unsafe-3des: error }4.2 规则严重等级玄象项目使用了三种严重等级等级含义玄象用途error报错阻止提交/构建密码学高危操作warn警告不阻止构建MAC 算法弱提示off关闭规则-4.3 AES 安全规则security/no-unsafe-aes: errorno-unsafe-aes规则检查 AES 加密算法的安全性危险模式说明AES-ECB 模式ECB 模式不使用 IV相同明文加密后密文相同64 位块大小块大小过小易受生日攻击硬编码密钥密钥不应硬编码在代码中提示玄象项目若未来涉及 AI 助手对话加密必须使用 AES-256-GCM 模式而非 ECB 模式。4.4 哈希算法规则security/no-unsafe-hash: errorno-unsafe-hash规则禁止使用弱哈希算法算法风险替代方案MD5已被破解存在碰撞SHA-256SHA-1已被破解存在碰撞SHA-256CRC32不具备密码学安全性SHA-256玄象项目的命盘生成若需要唯一标识应使用 SHA-256而非 MD5。4.5 RSA/DH/DSA/ECDSA 规则玄象项目对非对称加密算法均启用error级别检查security/no-unsafe-rsa-encrypt: error, security/no-unsafe-rsa-sign: error, security/no-unsafe-rsa-key: error, security/no-unsafe-dsa: error, security/no-unsafe-dsa-key: error, security/no-unsafe-dh: error, security/no-unsafe-dh-key: error, security/no-unsafe-ecdsa: error这些规则主要检查风险检查内容密钥长度不足RSA 密钥应 ≥ 2048 位弱填充方案RSA 应使用 OAEP 或 PSS 填充弱曲线参数ECDSA 应使用 NIST 推荐曲线DH 参数过小DH 素数应 ≥ 2048 位4.6 3DES 算法规则security/no-unsafe-3des: errorno-unsafe-3des规则禁止使用 3DES 算法风险3DES 块大小仅 64 位易受生日攻击。替代方案使用 AES-256。4.7 MAC 算法规则security/no-unsafe-mac: warnno-unsafe-mac规则警告弱 MAC 算法风险CBC-MAC 等弱 MAC 算法存在安全漏洞。替代方案使用 HMAC-SHA256。提示玄象项目将no-unsafe-mac设为warn而非error是因为部分场景下弱 MAC 仍有临时用途。但生产环境必须替换为强 MAC 算法。五、规则集与单条规则的优先级5.1 优先级机制code-linter.json5中的规则优先级如下rules.xxx (最高) ↑ ruleSet[] ↓ 默认规则 (最低)rules中的单条规则会覆盖ruleSet中的同名规则。5.2 玄象项目优先级实战玄象项目当前在rules中仅声明安全规则未覆盖性能规则或 TypeScript 规则rules: { // 仅安全规则未覆盖其他规则集 }若玄象项目未来想关闭 TypeScript 规则集中的no-explicit-any可这样配置rules: { typescript-eslint/no-explicit-any: off }六、玄象项目实际代码规范检查6.1 触发 lint 命令玄象项目可通过 DevEco Studio 的 “Code Linter” 面板触发检查也可在hvigorfile.ts中集成// hvigorfile.ts (假设扩展)import{appTasks}fromohos/hvigor-ohos-plugin;exportdefault{system:appTasks,plugins:[// 集成 lint 任务]};6.2 命令行执行# 通过 hvigor 命令行执行 linthvigorw codeLinter--modemodule-pmoduleentrydefault6.3 检查结果示例玄象项目典型的 lint 警告输出ERROR: src/main/ets/common/utils/LunarCalendar.ets performance/no-large-object-in-state State property lunarData exceeds 1KB, consider using StorageLink or AppStorage WARN: src/main/ets/pages/HomePage.ets typescript-eslint/no-unused-vars Variable tempIndex is declared but never used提示lint 输出后玄象项目开发者应优先修复ERROR级别问题WARN级别问题可在迭代中逐步解决。七、与 IDE 集成的代码提示7.1 DevEco Studio 集成DevEco Studio 默认集成code-linter可在编辑器中实时显示 lint 警告红色波浪线error级别规则违反黄色波浪线warn级别规则违反灰色提示未使用变量等7.2 玄象项目 IDE 提示示例当玄象项目代码出现以下情况时IDE 会立即提示场景IDE 提示使用 MD5 算法“Unsafe hash algorithm: MD5”在 forEach 中调用异步“Async call inside forEach is prohibited”State 中存储大对象“State property too large, use AppStorage instead”使用 any 类型“Type ‘any’ is not allowed”7.3 自动修复部分 lint 规则支持自动修复可通过 DevEco Studio 的 “Quick Fix” 功能⌥ Enter触发// 修复前constdata:anythis.getData();// 修复后constdata:LunarDatathis.getData();八、玄象项目 lint 配置演进路线8.1 当前阶段基础规则集玄象项目当前启用performance/recommendedtypescript-eslint/recommended 12 条安全规则覆盖核心检查维度。8.2 第二阶段ArkUI 规则集玄象项目规模扩大后可启用arkui/recommended规则集ruleSet: [ plugin:performance/recommended, plugin:typescript-eslint/recommended, plugin:arkui/recommended ]该规则集主要检查arkui/no-unused-state未使用的 State 变量arkui/no-direct-dom-access禁止直接 DOM 操作arkui/prefer-builder-over-method建议用 Builder 代替返回组件的方法8.3 第三阶段自定义规则玄象项目最终可定制化 lint 规则例如rules: { // 玄象特定规则 xuanxiang/no-hardcoded-color: error, // 禁止硬编码颜色必须用 Colors.XXX xuanxiang/prefer-styles-import: warn, // 建议 import Styles xuanxiang/no-console-log: error // 禁止 console.log必须用 hilog }总结本篇以玄象项目code-linter.json5配置为蓝本深入剖析了 HarmonyOS ArkTS 项目的静态代码检查体系从files/ignore范围控制、ruleSet规则集选择、rules单条规则覆盖到安全规则集AES / Hash / RSA / 3DES的实战剖析。掌握这套代码规范体系是构建工业级 HarmonyOS 应用、顺利通过 AppGallery 上架审核的必备能力。下一篇《08 · build-profile.json5 与 hvigor 构建链路剖析》将带您深入玄象项目的构建配置与构建工具链。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源HarmonyOS 官方文档代码检查工具 code-linterHarmonyOS 官方文档安全规则集HarmonyOS 官方文档性能规则集TypeScript ESLinttypescript-eslint.io开源鸿蒙跨平台社区https://openharmonycrossplatform.csdn.net

相关新闻

HarmonyOS应用《玄象》开发实战:九宫格功能入口:Grid / GridItem / columnsTemplate(‘1fr 1fr 1fr‘)

HarmonyOS应用《玄象》开发实战:九宫格功能入口:Grid / GridItem / columnsTemplate(‘1fr 1fr 1fr‘)

阅读时长:约 20 分钟 | 难度:★★★★☆ | 篇章:第 3 篇 首页与功能导航 对应源码:entry/src/main/ets/pages/HomePage.ets 中的 FeatureGrid Builder 前言 九宫格是移动端首页的经典布局——玄象项目首页用 33 网格展示星宿…

2026/10/19 4:18:53 阅读更多 →
【Springboot毕设全套源码+文档】基于spring boot的调查问卷系统的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于spring boot的调查问卷系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/19 0:05:31 阅读更多 →
如何为旧款iPhone降级系统:Legacy-iOS-Kit终极指南

如何为旧款iPhone降级系统:Legacy-iOS-Kit终极指南

如何为旧款iPhone降级系统:Legacy-iOS-Kit终极指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 你知…

2026/10/20 7:27:32 阅读更多 →

最新新闻

AI应用开发中Skill复用的维护成本与治理策略

AI应用开发中Skill复用的维护成本与治理策略

1. 从"能跑就行"到"改一处崩三处":Skill复用的隐性成本 刚接触AI应用开发那会儿,我对"Skill复用"这件事的理解特别朴素——把一段能跑通的提示词逻辑或者工具调用链封装起来,下次遇到类似场景直接拿来用&#…

2026/10/20 14:28:24 阅读更多 →
LeRobot与IsaacLab Arena集成:机器人模仿学习仿真训练实战

LeRobot与IsaacLab Arena集成:机器人模仿学习仿真训练实战

做机器人学习的同学应该都有同感:真实机器人上采集一条高质量轨迹,远比想象中费时间。机械臂要复位、道具要摆回原位、标定稍微漂一点,一条episode就废了。一天下来攒不出多少有效数据,而LeRobot这类模仿学习框架偏偏最需要数据。…

2026/10/20 14:28:24 阅读更多 →
移动端自动化测试:LLM多角色拆分架构与实操指南

移动端自动化测试:LLM多角色拆分架构与实操指南

1. 移动端自动化测试的模型拆分困局做过移动端自动化的人都有一个共同感受:脚本写起来不难,难的是让它稳定跑下去。UI 元素定位漂移、页面加载时序不确定、不同机型渲染差异,这些问题叠加在一起,传统基于固定选择器的脚本维护成本…

2026/10/20 14:28:24 阅读更多 →
移动端自动化测试:角色级模型拆分实战与踩坑总结

移动端自动化测试:角色级模型拆分实战与踩坑总结

移动端自动化测试这块,我前前后后折腾了快三年,从最早的 Appium 脚本堆到后来的图像识别方案,踩过的坑能写满一个笔记本。去年开始把大模型接进测试链路之后,有个问题一直卡着我:单模型跑全流程,准确率上不…

2026/10/20 14:28:24 阅读更多 →
LangChain应用安全实战:提示注入与数据泄露防护指南

LangChain应用安全实战:提示注入与数据泄露防护指南

1. 为什么LangChain应用必须把安全当回事刚开始接触LangChain的时候,我和大多数人一样,满脑子想的都是怎么用chain怼工作流、怎么接各种工具、怎么能少写点胶水代码。真正让我意识到问题严重的,是某次在一个demo里给Agent接了数据库查询工具之…

2026/10/20 14:28:24 阅读更多 →
C#上位机运动控制框架:配置、板卡与权限解耦实践

C#上位机运动控制框架:配置、板卡与权限解耦实践

做上位机运动控制这些年,我见过太多项目死在"代码改不动"上。设备跑起来没问题,一旦客户换板卡、加轴、改权限,整个程序就得动手术。最开始我手头这套C#源码框架也一样,轴坐标写死在窗体里、板卡函数散落在各个按钮事件…

2026/10/20 14:27:19 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →