在當(dāng)今對(duì)代碼質(zhì)量和規(guī)范性要求日益嚴(yán)格的環(huán)境中,開發(fā)者亟需強(qiáng)大的代碼檢查工具來應(yīng)對(duì)挑戰(zhàn)。DevEco Studio Code Linter正是這樣一款工具,它通過提升代碼質(zhì)量、統(tǒng)一代碼風(fēng)格,并有效檢測(cè)安全漏洞和潛在bug,為開發(fā)者提供了顯著的優(yōu)勢(shì),成為現(xiàn)代軟件開發(fā)中不可或缺的重要利器。
DevEco Studio Code Linter支持對(duì)ArkTS/TS代碼進(jìn)行最佳實(shí)踐/編程規(guī)范方面的檢查,不符合編碼規(guī)范的語句,將在代碼中提示并警告,點(diǎn)擊錯(cuò)誤信息,會(huì)展示具體錯(cuò)誤位置及詳細(xì)的規(guī)則描述。開發(fā)者可根據(jù)掃描結(jié)果中告警提示手工修復(fù)代碼缺陷,或者執(zhí)行一鍵式自動(dòng)修復(fù),在代碼開發(fā)階段,確保代碼質(zhì)量。
本文將重點(diǎn)介紹Code Linter的安全規(guī)則及使用。相關(guān)規(guī)則描述如下:
| 序號(hào) | 安全規(guī)則 | 規(guī)則描述 |
| 1 | @security/no-cycle | 禁止使用循環(huán)依賴 |
| 2 | @security/no-unsafe-aes | 禁止在AES加密算法中使用不安全的ECB加密模式,推薦使用Petal Aegis SDK中的安全AES接口,詳情參見對(duì)稱加解密(https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/aegis-encryption-and-decryption-symmetry-0000001861247310#section153801471317) |
| 3 | @security/no-unsafe-dh | 禁止使用不安全的DH密鑰協(xié)商算法,如DH模數(shù)長(zhǎng)度小于2048bit |
| 4 | @security/no-unsafe-dh-key | 禁止使用不安全的DH密鑰,如DH模數(shù)長(zhǎng)度小于2048bit |
| 5 | @security/no-unsafe-dsa | 禁止使用不安全的DSA簽名算法,如DSA模數(shù)長(zhǎng)度小于2048bit、摘要中使用不安全的SHA1哈希算法 |
| 6 | @security/no-unsafe-dsa-key | 禁止使用不安全的DSA密鑰,如DSA模數(shù)長(zhǎng)度小于2048bit |
| 7 | @security/no-unsafe-ecdsa | 禁止在ECDSA簽名算法中使用不安全的SHA1摘要算法,推薦使用Petal Aegis SDK中的安全ECDSA接口,詳情參見:ECDSA簽名驗(yàn)簽(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消息認(rèn)證算法中使用不安全的哈希算法,例如SHA1 |
| 10 | @security/no-unsafe-rsa-encrypt | 禁止使用不安全的RSA非對(duì)稱加密算法,如RSA模數(shù)長(zhǎng)度小于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模數(shù)長(zhǎng)度小于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模數(shù)長(zhǎng)度小于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 支持配置代碼安全檢查規(guī)則:
在工程根目錄下創(chuàng)建code-linter.json5配置文件,可對(duì)代碼檢查的范圍及對(duì)應(yīng)生效的檢查規(guī)則進(jìn)行配置,其中files和ignore配置項(xiàng)共同確定了代碼檢查范圍,ruleSet和rules配置項(xiàng)共同確定了生效的規(guī)則范圍。
具體配置項(xiàng)功能如下:
1、files:配置待檢查的文件名單,如未指定目錄,將檢查當(dāng)前被選中的文件或文件夾中的代碼文件,例如:["**/*.ets","**/*.js","**/*.ts"]。
2、ignore:配置無需檢查的文件目錄,其指定的目錄或文件需使用相對(duì)路徑格式,相對(duì)于code-linter.json5所在工程根目錄,例如:build/**/*。
3、ruleSet:配置檢查使用的規(guī)則集,規(guī)則集支持一次導(dǎo)入多條規(guī)則。規(guī)則詳情參考codelinter代碼檢查規(guī)則(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-codelinter-rule-V5)。
4、rules:可基于ruleSet配置的規(guī)則集,新增額外規(guī)則項(xiàng),或修改ruleSet中規(guī)則默認(rèn)配置,例如將規(guī)則集中某條規(guī)則告警級(jí)別由warn改為error。
5、overrides:針對(duì)工程根目錄下部分特定目錄或文件,可配置定制化檢查的規(guī)則。
{
"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 檢查方法:
打開代碼編輯器窗口右鍵點(diǎn)擊Code Linter,或在工程管理窗口中選中單個(gè)或多個(gè)工程文件/目錄,右鍵點(diǎn)擊Code Linter> Full Linter執(zhí)行代碼全量檢查。(如下圖所示)

1.3 查看/處理代碼檢查結(jié)果
掃描完成后,在底部工具面板查看檢查結(jié)果。勾選Defects中不同告警等級(jí),可分別查看對(duì)應(yīng)信息。雙擊某條告警結(jié)果,可以跳轉(zhuǎn)到對(duì)應(yīng)代碼缺陷位置;選中告警結(jié)果時(shí),可以在右側(cè)Defect Description窗口查看告警對(duì)應(yīng)的規(guī)則詳細(xì)說明,其中包含正向和反向示例,用戶可根據(jù)建議修改代碼;搜索規(guī)則時(shí),可設(shè)定是否全詞匹配和大小寫敏感。
單擊
圖標(biāo),查看可修復(fù)的代碼規(guī)則,點(diǎn)擊
代碼修復(fù)圖標(biāo),可一鍵批量修復(fù)告警,并刷新檢查結(jié)果。

1.4 屏蔽告警信息:
在某些特殊場(chǎng)景下,若掃描結(jié)果中出現(xiàn)誤報(bào),點(diǎn)擊單條告警結(jié)果后的Ignore圖標(biāo),可忽略對(duì)告警所在行的Code Linter檢查,并支持勾選文件名稱或多條待屏蔽的告警批量執(zhí)行操作;
在文件頂部添加注釋/*eslint-disable */可以屏蔽整個(gè)文件執(zhí)行code linter檢查,在eslint-disable 后加入一個(gè)或多個(gè)以逗號(hào)分隔的規(guī)則Id,可以屏蔽具體檢查規(guī)則。
在需要忽略檢查的代碼塊前后分別添加/*eslint-disable */和/* eslint-enable */添加注釋信息,再執(zhí)行Code Linter,將不再顯示該代碼塊掃描結(jié)果;在待屏蔽的代碼行前一行添加/*eslint-disable-next-line */,也可屏蔽對(duì)該代碼行的Code Linter檢查。
如需恢復(fù)忽略的報(bào)錯(cuò)信息,可以直接刪除該行上方的注釋,重新執(zhí)行CodeLinter檢查。

1.5 導(dǎo)出檢查結(jié)果
點(diǎn)擊工具面板左側(cè)導(dǎo)出按鈕,即可導(dǎo)出檢查結(jié)果到excel文件,包含告警所在行、告警明細(xì)、告警級(jí)別等信息。

通過上述代碼安全規(guī)則的介紹,我們可以看到Code Linter的強(qiáng)大功能。它不僅能有效檢測(cè)代碼中的安全漏洞和潛在bug,還能仔細(xì)檢查語法和風(fēng)格問題。這意味著開發(fā)者在編碼階段就能及時(shí)發(fā)現(xiàn)并修復(fù)這些問題,從而大大降低未來出錯(cuò)的風(fēng)險(xiǎn),讓整個(gè)開發(fā)過程更加順暢和高效。無論是新手還是資深開發(fā)者,Code Linter都是您得力的伙伴。
-
代碼
+關(guān)注
關(guān)注
30文章
4976瀏覽量
74363 -
DevEco Studio
+關(guān)注
關(guān)注
0文章
33瀏覽量
1558
原文標(biāo)題:探索DevEco Studio Code Linter:提升代碼安全的全新利器
文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
最新 HUAWEI DevEco Studio 使用技巧
HUAWEI DevEco Device Tool 使用指南【持續(xù)更新中...】
DevEco Studio 2.0 Beta3 Windows/Mac安裝包,以及使用指南
@開發(fā)者,這份DevEco Studio搭建指南請(qǐng)收下!
【資料】DevEco Studio 1.0 使用指南
DevEco Studio 3.1 Beta新特性知多少
HUAWEI DevEco Device Tool 使用指南
DevEco Studio 2.1 Release版HarmonyOS SDK升級(jí)
DevEco Studio 3.0 測(cè)試版來啦
DevEco Studio 3.1 Beta新特性知多少
DevEco Studio 3.1 Beta新特性知多少?
DevEco Studio Code Linter的使用指南
評(píng)論