在當今對代碼質(zhì)量和規(guī)范性要求日益嚴格的環(huán)境中,開發(fā)者亟需強大的代碼檢查工具來應(yīng)對挑戰(zhàn)。DevEco Studio Code Linter正是這樣一款工具,它通過提升代碼質(zhì)量、統(tǒng)一代碼風格,并有效檢測安全漏洞和潛在bug,為開發(fā)者提供了顯著的優(yōu)勢,成為現(xiàn)代軟件開發(fā)中不可或缺的重要利器。
DevEco Studio Code Linter支持對ArkTS/TS代碼進行最佳實踐/編程規(guī)范方面的檢查,不符合編碼規(guī)范的語句,將在代碼中提示并警告,點擊錯誤信息,會展示具體錯誤位置及詳細的規(guī)則描述。開發(fā)者可根據(jù)掃描結(jié)果中告警提示手工修復代碼缺陷,或者執(zhí)行一鍵式自動修復,在代碼開發(fā)階段,確保代碼質(zhì)量。
本文將重點介紹Code Linter的安全規(guī)則及使用。相關(guān)規(guī)則描述如下:
序號 | 安全規(guī)則 | 規(guī)則描述 |
1 | @security/no-cycle | 禁止使用循環(huán)依賴 |
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密鑰協(xié)商算法,如DH模數(shù)長度小于2048bit |
4 | @security/no-unsafe-dh-key | 禁止使用不安全的DH密鑰,如DH模數(shù)長度小于2048bit |
5 | @security/no-unsafe-dsa | 禁止使用不安全的DSA簽名算法,如DSA模數(shù)長度小于2048bit、摘要中使用不安全的SHA1哈希算法 |
6 | @security/no-unsafe-dsa-key | 禁止使用不安全的DSA密鑰,如DSA模數(shù)長度小于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模數(shù)長度小于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ù)長度小于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ù)長度小于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配置文件,可對代碼檢查的范圍及對應(yīng)生效的檢查規(guī)則進行配置,其中files和ignore配置項共同確定了代碼檢查范圍,ruleSet和rules配置項共同確定了生效的規(guī)則范圍。
具體配置項功能如下:
1、files:配置待檢查的文件名單,如未指定目錄,將檢查當前被選中的文件或文件夾中的代碼文件,例如:["**/*.ets","**/*.js","**/*.ts"]。
2、ignore:配置無需檢查的文件目錄,其指定的目錄或文件需使用相對路徑格式,相對于code-linter.json5所在工程根目錄,例如:build/**/*。
3、ruleSet:配置檢查使用的規(guī)則集,規(guī)則集支持一次導入多條規(guī)則。規(guī)則詳情參考codelinter代碼檢查規(guī)則(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-codelinter-rule-V5)。
4、rules:可基于ruleSet配置的規(guī)則集,新增額外規(guī)則項,或修改ruleSet中規(guī)則默認配置,例如將規(guī)則集中某條規(guī)則告警級別由warn改為error。
5、overrides:針對工程根目錄下部分特定目錄或文件,可配置定制化檢查的規(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 檢查方法:
打開代碼編輯器窗口右鍵點擊Code Linter,或在工程管理窗口中選中單個或多個工程文件/目錄,右鍵點擊Code Linter> Full Linter執(zhí)行代碼全量檢查。(如下圖所示)
1.3 查看/處理代碼檢查結(jié)果
掃描完成后,在底部工具面板查看檢查結(jié)果。勾選Defects中不同告警等級,可分別查看對應(yīng)信息。雙擊某條告警結(jié)果,可以跳轉(zhuǎn)到對應(yīng)代碼缺陷位置;選中告警結(jié)果時,可以在右側(cè)Defect Description窗口查看告警對應(yīng)的規(guī)則詳細說明,其中包含正向和反向示例,用戶可根據(jù)建議修改代碼;搜索規(guī)則時,可設(shè)定是否全詞匹配和大小寫敏感。
單擊圖標,查看可修復的代碼規(guī)則,點擊代碼修復圖標,可一鍵批量修復告警,并刷新檢查結(jié)果。
1.4 屏蔽告警信息:
在某些特殊場景下,若掃描結(jié)果中出現(xiàn)誤報,點擊單條告警結(jié)果后的Ignore圖標,可忽略對告警所在行的Code Linter檢查,并支持勾選文件名稱或多條待屏蔽的告警批量執(zhí)行操作;
在文件頂部添加注釋/*eslint-disable */可以屏蔽整個文件執(zhí)行code linter檢查,在eslint-disable 后加入一個或多個以逗號分隔的規(guī)則Id,可以屏蔽具體檢查規(guī)則。
在需要忽略檢查的代碼塊前后分別添加/*eslint-disable */和/* eslint-enable */添加注釋信息,再執(zhí)行Code Linter,將不再顯示該代碼塊掃描結(jié)果;在待屏蔽的代碼行前一行添加/*eslint-disable-next-line */,也可屏蔽對該代碼行的Code Linter檢查。
如需恢復忽略的報錯信息,可以直接刪除該行上方的注釋,重新執(zhí)行CodeLinter檢查。
1.5 導出檢查結(jié)果
點擊工具面板左側(cè)導出按鈕,即可導出檢查結(jié)果到excel文件,包含告警所在行、告警明細、告警級別等信息。
通過上述代碼安全規(guī)則的介紹,我們可以看到Code Linter的強大功能。它不僅能有效檢測代碼中的安全漏洞和潛在bug,還能仔細檢查語法和風格問題。這意味著開發(fā)者在編碼階段就能及時發(fā)現(xiàn)并修復這些問題,從而大大降低未來出錯的風險,讓整個開發(fā)過程更加順暢和高效。無論是新手還是資深開發(fā)者,Code Linter都是您得力的伙伴。
-
代碼
+關(guān)注
關(guān)注
30文章
4788瀏覽量
68612 -
DevEco Studio
+關(guān)注
關(guān)注
0文章
21瀏覽量
1090
原文標題:探索DevEco Studio Code Linter:提升代碼安全的全新利器
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論