在当今对代码质量和规范性要求日益严格的环境中,开发者亟需强大的代码检查工具来应对挑战。DevEco Studio Code Linter正是这样一款工具,它通过提升代码质量、统一代码风格,并有效检测安全漏洞和潜在bug,为开发者提供了显著的优势,成为现代软件开发中不可或缺的重要利器。
DevEco Studio Code Linter支持对ArkTS/TS代码进行最佳实践/编程规范方面的检查,不符合编码规范的语句,将在代码中提示并警告,点击错误信息,会展示具体错误位置及详细的规则描述。开发者可根据扫描结果中告警提示手工修复代码缺陷,或者执行一键式自动修复,在代码开发阶段,确保代码质量。
本文将重点介绍Code Linter的安全规则及使用。相关规则描述如下:
序号 | 安全规则 | 规则描述 |
1 | @security/no-cycle | 禁止使用循环依赖 |
2 | @security/no-unsafe-aes | 禁止在AES加密算法中使用不安全的ECB加密模式,推荐使用Petal Aegis SDK中的安全AES接口,详情参见对称加解密(https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/aegis-encryption-and-decryption-symmetry-0000001861247310#section153801471317) |
3 | @security/no-unsafe-dh | 禁止使用不安全的DH密钥协商算法,如DH模数长度小于2048bit |
4 | @security/no-unsafe-dh-key | 禁止使用不安全的DH密钥,如DH模数长度小于2048bit |
5 | @security/no-unsafe-dsa | 禁止使用不安全的DSA签名算法,如DSA模数长度小于2048bit、摘要中使用不安全的SHA1哈希算法 |
6 | @security/no-unsafe-dsa-key | 禁止使用不安全的DSA密钥,如DSA模数长度小于2048bit |
7 | @security/no-unsafe-ecdsa | 禁止在ECDSA签名算法中使用不安全的SHA1摘要算法,推荐使用Petal Aegis SDK中的安全ECDSA接口,详情参见: ECDSA签名验签(https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/aegis-signature-verification-0000001866035345#section12984925133517) |
8 | @security/no-unsafe-hash | 禁止使用不安全的哈希算法,例如MD5、SHA1 |
9 | @security/no-unsafe-mac | 禁止在MAC消息认证算法中使用不安全的哈希算法,例如SHA1 |
10 | @security/no-unsafe-rsa-encrypt | 禁止使用不安全的RSA非对称加密算法,如RSA模数长度小于2048bit、填充模式为PKCS1、摘要或掩码摘要中使用不安全的MD5或SHA1哈希算法,推荐使用Petal Aegis SDK中的安全RSA加密和解密接口,详情参见:RSA加解密(https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/aegis-encryption-and-decryption-asymmetric-0000001907932453#section1925912512) |
11 | @security/no-unsafe-rsa-key | 禁止使用不安全的RSA密钥,如RSA模数长度小于2048bit。推荐使用Petal Aegis SDK中的安全RSA签名接口,详情参见:RSA密钥(https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-References/ohaeggeneratersakeypairbase64-0000001864601898) |
12 | @security/no-unsafe-rsa-sign | 禁止不安全的RSA签名算法,如RSA模数长度小于2048bit、摘要或掩码摘要中使用不安全的MD5或SHA1哈希算法。推荐使用PetalAegis SDK中的安全RSA签名接口,详情参见: RSA加解密(https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/aegis-signature-verification-0000001866035345#section1039727112016) |
1使用指南
1.1 支持配置代码安全检查规则:
在工程根目录下创建code-linter.json5配置文件,可对代码检查的范围及对应生效的检查规则进行配置,其中files和ignore配置项共同确定了代码检查范围,ruleSet和rules配置项共同确定了生效的规则范围。
具体配置项功能如下:
1、files:配置待检查的文件名单,如未指定目录,将检查当前被选中的文件或文件夹中的代码文件,例如:["**/*.ets","**/*.js","**/*.ts"]。
2、ignore:配置无需检查的文件目录,其指定的目录或文件需使用相对路径格式,相对于code-linter.json5所在工程根目录,例如:build/**/*。
3、ruleSet:配置检查使用的规则集,规则集支持一次导入多条规则。规则详情参考codelinter代码检查规则(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-codelinter-rule-V5)。
4、rules:可基于ruleSet配置的规则集,新增额外规则项,或修改ruleSet中规则默认配置,例如将规则集中某条规则告警级别由warn改为error。
5、overrides:针对工程根目录下部分特定目录或文件,可配置定制化检查的规则。
{ "files": [ "**/*.ts", "**/*.ets", "**/*.js" ], "ignore": [ "**/ohosTest/**/*", "**/node_modules/**/*", "**/hvigorfile.ts", "**/oh_modules/**/*", "**/build/**/*", "**/.preview/**/*" ], "rules": { "@security/no-cycle": "error", "@security/no-unsafe-aes": "error", "@security/no-unsafe-hash": "error", "@security/no-unsafe-mac": "error", "@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", } }
1.2 检查方法:
打开代码编辑器窗口右键点击Code Linter,或在工程管理窗口中选中单个或多个工程文件/目录,右键点击Code Linter> Full Linter执行代码全量检查。(如下图所示)
1.3 查看/处理代码检查结果
扫描完成后,在底部工具面板查看检查结果。勾选Defects中不同告警等级,可分别查看对应信息。双击某条告警结果,可以跳转到对应代码缺陷位置;选中告警结果时,可以在右侧Defect Description窗口查看告警对应的规则详细说明,其中包含正向和反向示例,用户可根据建议修改代码;搜索规则时,可设定是否全词匹配和大小写敏感。
单击图标,查看可修复的代码规则,点击代码修复图标,可一键批量修复告警,并刷新检查结果。
1.4 屏蔽告警信息:
在某些特殊场景下,若扫描结果中出现误报,点击单条告警结果后的Ignore图标,可忽略对告警所在行的Code Linter检查,并支持勾选文件名称或多条待屏蔽的告警批量执行操作;
在文件顶部添加注释/*eslint-disable */可以屏蔽整个文件执行code linter检查,在eslint-disable 后加入一个或多个以逗号分隔的规则Id,可以屏蔽具体检查规则。
在需要忽略检查的代码块前后分别添加/*eslint-disable */和/* eslint-enable */添加注释信息,再执行Code Linter,将不再显示该代码块扫描结果;在待屏蔽的代码行前一行添加/*eslint-disable-next-line */,也可屏蔽对该代码行的Code Linter检查。
如需恢复忽略的报错信息,可以直接删除该行上方的注释,重新执行CodeLinter检查。
1.5 导出检查结果
点击工具面板左侧导出按钮,即可导出检查结果到excel文件,包含告警所在行、告警明细、告警级别等信息。
通过上述代码安全规则的介绍,我们可以看到Code Linter的强大功能。它不仅能有效检测代码中的安全漏洞和潜在bug,还能仔细检查语法和风格问题。这意味着开发者在编码阶段就能及时发现并修复这些问题,从而大大降低未来出错的风险,让整个开发过程更加顺畅和高效。无论是新手还是资深开发者,Code Linter都是您得力的伙伴。
全部0条评论
快来发表一下你的评论吧 !