在當(dāng)今對(duì)代碼質(zhì)量和規(guī)范性要求日益嚴(yán)格的環(huán)境中,開發(fā)者亟需強(qiáng)大的代碼檢查工具來(lái)應(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ī)范的語(yǔ)句,將在代碼中提示并警告,點(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:配置無(wú)需檢查的文件目錄,其指定的目錄或文件需使用相對(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ì)檢查語(yǔ)法和風(fēng)格問題。這意味著開發(fā)者在編碼階段就能及時(shí)發(fā)現(xiàn)并修復(fù)這些問題,從而大大降低未來(lái)出錯(cuò)的風(fēng)險(xiǎn),讓整個(gè)開發(fā)過程更加順暢和高效。無(wú)論是新手還是資深開發(fā)者,Code Linter都是您得力的伙伴。
-
代碼
+關(guān)注
關(guān)注
30文章
4717瀏覽量
68204 -
DevEco Studio
+關(guān)注
關(guān)注
0文章
21瀏覽量
1041
原文標(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)先 登錄
相關(guān)推薦
評(píng)論