HarmonyOS 应用开发《掌上英语》第63篇:IDE 诊断工具——GetDiagnostics 在开发中的使用

发布时间:2026/7/29 11:30:49

HarmonyOS 应用开发《掌上英语》第63篇:IDE 诊断工具——GetDiagnostics 在开发中的使用 IDE 诊断工具——GetDiagnostics 在开发中的使用一、代码质量的第一道防线在 HarmonyOS 应用开发中代码质量不仅关乎功能的正确性更关乎应用的性能和安全性。DevEco Studio 提供了强大的实时诊断工具——Linter代码检查器它能够在编码阶段就发现潜在的问题而不是等到编译或运行时才发现。GetDiagnostics 是 DevEco Studio 内置的诊断接口它能够实时获取当前项目的代码诊断结果包括错误、警告和信息。对于开发者而言理解诊断工具的原理和配置方法能够显著提升编码效率和代码质量。二、DevEco Studio 的实时诊断机制DevEco Studio 的 Linter 工作在按需诊断模式下文件保存时触发当开发者保存一个 .ets 文件时Linter 会自动对该文件进行诊断项目构建时触发在 Hvigor 构建过程中会执行完整的 Lint 检查手动触发开发者可以随时通过右键菜单或快捷键手动触发诊断诊断结果会显示在编辑器内联在代码中用波浪线标记问题鼠标悬停显示问题描述Problems 面板集中显示所有诊断结果支持按文件、严重级别过滤滚动条标记在编辑器右侧滚动条上显示问题位置标记三、code-linter.json5 配置详解在我们的项目中Linter 的配置在code-linter.json5文件中{ 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 } }配置字段解析files指定 Linter 检查的文件范围ignore排除不需要检查的目录。在我们的项目中测试代码ohosTest、test、构建产物build、依赖node_modules、oh_modules都被排除ruleSet使用的规则集。performance/recommended是性能相关的规则typescript-eslint/recommended是 TypeScript 规范规则rules自定义规则覆盖。项目的安全相关规则非常严格——大多数不安全密码学操作都被禁止四、安全规则的意义配置中的安全规则涵盖了密码学操作的各个方面规则级别说明no-unsafe-aeserror禁止不安全的 AES 配置no-unsafe-hasherror禁止不安全哈希算法no-unsafe-macwarn警告不安全 MAC 算法no-unsafe-dherror禁止不安全 Diffie-Hellman 参数no-unsafe-rsa-encrypterror禁止不安全 RSA 加密no-unsafe-ecdsaerror禁止不安全 ECDSA 签名no-unsafe-3deserror禁止使用 3DES 算法这些规则确保项目不会使用过时或不安全的加密算法。对于英语学习 App 来说虽然密码学操作不多可能仅在登录验证或支付模块中使用但一旦涉及就需要确保使用安全的算法。五、性能规则集的应用performance/recommended规则集是专门为 HarmonyOS 应用性能优化的过度渲染检测识别可能导致频繁重渲染的代码模式嵌套深度检测识别过深的组件嵌套ForEach 使用检测在数据量大时提示使用 LazyForEachBuilder 拆分建议建议将复杂组件拆分为 Builder这些规则实时运行在 DevEco Studio 中当开发者编写代码时如果触发了性能规则编辑器会立即给出警告。例如当在 List 中使用 ForEach 而非 LazyForEach 时Linter 会提示建议替换。六、Linter 与编译器的协作Linter 和 ArkTS 编译器是两条独立但互补的检查线Linter在编码阶段实时检查关注代码规范、安全、性能编译器在构建阶段检查关注语法正确性、类型安全两条线的关系是Linter 发现问题时只给出警告或建议不影响构建编译器发现问题时直接报错阻止构建。但在build-profile.json5中配置strictMode时strictMode: { caseSensitiveCheck: true, useNormalizedOHMUrl: true }某些 Linter 警告可以升级为构建错误强制开发者修复。七、在开发工作流中使用诊断工具推荐的开发工作流编码阶段关注编辑器的实时诊断提示立即修复红色波浪线问题提交前手动触发 Lint 检查Code → Inspect Code确保没有遗留的警告构建时Hvigor 会自动执行 Lint 检查构建失败时查看 Build 面板的详细输出常见操作AltEnter快速修复当前问题CtrlAltShiftL格式化代码右键文件 → Analyze → Inspect Code对整个文件进行完整检查八、总结DevEco Studio 的 GetDiagnostics 诊断工具为开发者提供了实时的代码质量反馈。从code-linter.json5的配置可以看到我们的项目既关注性能performance/recommended也关注安全一系列安全规则。安全规则全部设为 error 级别意味着任何不安全的密码学操作都会导致构建失败。性能规则集则在后台默默工作每当开发者写出可能影响性能的代码时给出提示。在 11 模块架构的复杂项目中Linter 是维持代码质量一致性的有效工具。

相关新闻