目錄
1 -> Code Linter代碼檢查
2 -> 配置代碼檢查規則
3 -> 查看/處理代碼檢查結果
1 -> Code Linter代碼檢查
Code Linter針對ArkTS/TS代碼進行最佳實踐/編程規范方面的檢查。
可根據掃描結果中告警提示手工修復代碼缺陷,或者執行一鍵式自動修復,在代碼開發階段,確保代碼質量。
檢查方法:
在已打開的代碼編輯器窗口單擊右鍵點擊Code Linter,或在工程管理窗口中鼠標選中單個或多個工程文件/目錄,右鍵選擇Code Linter?> Full Linter執行代碼全量檢查。
如只需對Git工程中增量文件(包含新增/修改/重命名)進行檢查,可在commit界面右下角點擊齒輪圖標,選擇Incremental Linter執行增量檢查。
說明
- 若未配置代碼檢查規則文件,直接執行Code Linter,將按照默認的編程規范規則對.ets文件進行檢查。
- Code Linter不對如下文件及目錄進行檢查:
- src/ohosTest文件夾
- /src/test文件夾
- node_modules文件夾
- oh_modules文件夾
- build文件夾
- .preview文件夾
- hvigorfile.ts文件
- hvigorfile.js文件
- BuildProfile.ets文件
2 -> 配置代碼檢查規則
在工程根目錄下創建code-linter.json5配置文件,可對于代碼檢查的范圍及對應生效的檢查規則進行配置,其中files和ignore配置項共同確定了代碼檢查范圍,ruleSet和rules配置項共同確定了生效的規則范圍。具體配置項功能如下:
files:配置待檢查的文件名單,如未指定目錄,將檢查當前被選中的文件或文件夾中所有的.ets文件。
ignore:配置無需檢查的文件目錄,其指定的目錄或文件需使用相對路徑格式,相對于code-linter.json5所在工程根目錄,例如:build/**/*。
ruleSet:配置檢查使用的規則集,規則集支持一次導入多條規則。目前支持的規則集包括:
- 通用規則@typescript-eslint
- 安全規則@security
- 性能規則@performance
- 預覽規則@previewer
- 一次開發多端部署規則@cross-device-app-dev
- ArkTS代碼風格規則@hw-stylistic
- 正確性規則@correctness
說明
- 以上規則集均分為all和recommended兩種規則集。all規則集是規則全集,包含所有規則;recommended規則集是推薦使用的規則集合。all規則集包含recommended規則集。
- 不在工程根目錄新建code-linter.json5文件的情況下,Code Linter默認會檢查@performance/recommended和@typescript-eslint/recommended規則集包含的規則。
rules:可以基于ruleSet配置的規則集,新增額外規則項,或修改ruleSet中規則默認配置,例如:將規則集中某條規則告警級別由warn改為error。
overrides:針對工程根目錄下部分特定目錄或文件,可配置定制化檢查的規則。
{"files": //用于表示配置適用的文件范圍的 glob 模式數組。在沒有指定的情況下,應用默認配置["**/*.js", //字符串類型"**/*.ts"],"ignore": //一個表示配置對象不應適用的文件的 glob 模式數組。如果沒有指定,配置對象將適用于所有由 files 匹配的文件["build/**/*", //字符串類型"node_modules/**/*"],"ruleSet": //設置檢查待應用的規則集["plugin:@typescript-eslint/recommended" //快捷批量引入的規則集, 枚舉類型:plugin:@typescript-eslint/all, plugin:@typescript-eslint/recommended, plugin:@cross-device-app-dev/all, plugin:@cross-device-app-dev/recommended等],"rules": //可以對ruleSet配置的規則集中特定的某些規則進行修改、去使能, 或者新增規則集以外的規則;ruleSet和rules共同確定了代碼檢查所應用的規則{"@typescript-eslint/no-explicit-any": // ruleId后面跟數組時, 第一個元素為告警級別, 后面的對象元素為規則特定開關配置["error", //告警級別: 枚舉類型, 支持配置為suggestion, error, warn, off{"ignoreRestArgs": true //規則特定的開關配置, 為可選項, 不同規則其下層的配置項不同}],"@typescript-eslint/explicit-function-return-type": 2, // ruleId后面跟單獨一個數字時, 表示僅設置告警級別, 枚舉值為: 3(suggestion), 2(error), 1(warn), 0(off)"@typescript-eslint/no-unsafe-return": "warn" // ruleId后面跟單獨一個字符串時, 表示僅設置告警級別, 枚舉值為: suggestion, error, warn, off},"overrides": //針對特定的目錄或文件采用定制化的規則配置[{"files": //指定需要定制化配置規則的文件或目錄["entry/**/*.ts" //字符串類型],"excluded":["entry/**/*.test.js" //指定需要排除的目錄或文件, 被排除的目錄或文件不會按照定制化的規則配置被檢查; 字符串類型],"rules": //支持對overrides外公共配置的規則進行修改、去使能, 或者新增公共配置以外的規則; 該配置將覆蓋公共配置{"@typescript-eslint/explicit-function-return-type": // ruleId: 枚舉類型["warn", //告警級別: 枚舉類型, 支持配置為error, warn, off; 覆蓋公共配置, explicit-function-return-type告警級別為warn{allowExpressions: true //規則特定的開關配置, 為可選項, 不同規則其下層的配置項不同}],"@typescript-eslint/no-unsafe-return": "off" // 覆蓋公共配置, 不檢查no-unsafe-return規則}}]
}
3 -> 查看/處理代碼檢查結果
掃描完成后,在底部工具面板查看檢查結果。勾選Defects中不同告警等級,可分別查看對應告警級別的信息。雙擊某條告警結果,可以跳轉到對應代碼缺陷位置;選中告警結果時,可以在右側Defect Description窗口查看告警對應的規則詳細說明,其中包含正向和反向示例,并根據其中的建議修改代碼;搜索規則時,可設定是否全詞匹配和大小寫敏感。
單擊“閃電”圖標,查看可修復的代碼規則,點擊“扳手”代碼修復圖標,可以一鍵式批量修復告警,并刷新檢查結果。
屏蔽告警信息:
- 在某些特殊場景下,若掃描結果中出現誤報,點擊單條告警結果后的Ignore圖標,可以忽略對告警所在行的code linter檢查;或勾選文件名稱或多條待屏蔽的告警,點擊左側工具面板Ingore圖標批量執行操作;
- 在文件頂部添加注釋/* eslint-disable */可以屏蔽整個文件執行code linter檢查,在eslint-disable 后加入一個或多個以逗號分隔的規則Id,可以屏蔽具體檢查規則;
- 在需要忽略檢查的代碼塊前后分別添加/* eslint-disable */和/* eslint-enable */添加注釋信息,再執行Code Linter,將不再顯示該代碼塊掃描結果;在待屏蔽的代碼行前一行添加/* eslint-disable-next-line */,也可屏蔽對該代碼行的codelinter檢查。
如需恢復忽略的報錯信息,可以直接刪除該行上方的注釋,重新執行Code Linter檢查。
導出檢查結果:點擊工具面板左側導出按鈕,即可導出檢查結果到excel文件,包含告警所在行,告警明細,告警級別等信息。
感謝各位大佬支持!!!
互三啦!!!