diff --git a/ets2panda/linter/homecheck/src/model/File2Check.ts b/ets2panda/linter/homecheck/src/model/File2Check.ts index ecfc86270a7f9738fe6afd6ca45319a27f073504..f34f7e142014c745c4a44a142d450f6c92b2aeac 100644 --- a/ets2panda/linter/homecheck/src/model/File2Check.ts +++ b/ets2panda/linter/homecheck/src/model/File2Check.ts @@ -105,8 +105,12 @@ export class File2Check { } public async checkDisable(): Promise { - const fileLineList = await FileUtils.readLinesFromFile(this.arkFile.getFilePath()); - this.issues = await filterDisableIssue(fileLineList, this.issues, this.arkFile.getFilePath()); + try { + const fileLineList = await FileUtils.readLinesFromFile(this.arkFile.getFilePath()); + this.issues = await filterDisableIssue(fileLineList, this.issues, this.arkFile.getFilePath()); + } catch (e) { + logger.error(e); + } } public async run(): Promise { diff --git a/ets2panda/linter/homecheck/src/model/Project2Check.ts b/ets2panda/linter/homecheck/src/model/Project2Check.ts index 3e9c1bf9ed811aeca8b3a79474ba520156a057d6..43d57723ef431ecdf376c738e75b2ab3a5dec8cb 100644 --- a/ets2panda/linter/homecheck/src/model/Project2Check.ts +++ b/ets2panda/linter/homecheck/src/model/Project2Check.ts @@ -167,10 +167,14 @@ export class Project2Check { if (!fs.existsSync(filePath)) { continue; } - const fileLineList = await FileUtils.readLinesFromFile(filePath); - const filtedResult = await filterDisableIssue(fileLineList, [issue], filePath); - if (filtedResult.length > 0) { - filtedIssues = filtedIssues.concat(filtedResult[0]); + try { + const fileLineList = await FileUtils.readLinesFromFile(filePath); + const filtedResult = await filterDisableIssue(fileLineList, [issue], filePath); + if (filtedResult.length > 0) { + filtedIssues = filtedIssues.concat(filtedResult[0]); + } + } catch (e) { + logger.error(e); } } this.issues = filtedIssues; diff --git a/ets2panda/linter/homecheck/src/utils/common/Disable.ts b/ets2panda/linter/homecheck/src/utils/common/Disable.ts index e8f86a26181832606afabbf6b5748401fd0220e1..a33205ff20ae64f978186253320995756b2b4308 100644 --- a/ets2panda/linter/homecheck/src/utils/common/Disable.ts +++ b/ets2panda/linter/homecheck/src/utils/common/Disable.ts @@ -17,6 +17,9 @@ import * as fs from 'fs'; import path from 'path'; import { IssueReport } from '../../model/Defects'; import { FileUtils } from '../../Index'; +import Logger, { LOG_MODULE_TYPE } from 'arkanalyzer/lib/utils/logger'; + +const logger = Logger.getLogger(LOG_MODULE_TYPE.HOMECHECK, 'Disable'); export const DisableText = { FILE_DISABLE_TEXT: '\/* homecheck-disable *\/', @@ -25,23 +28,27 @@ export const DisableText = { export async function filterDisableIssue(lineList: string[], issues: IssueReport[], filePath: string): Promise { let filtedIssues: IssueReport[] = []; - for (const issue of issues) { - // @migration/arkui-data-observation规则的自动修复是在定义处,存在跨文件场景 - const actualFilePath = path.normalize(issue.defect.mergeKey.split('%')[0]); - if (path.normalize(actualFilePath) !== path.normalize(filePath)) { - if (!fs.existsSync(actualFilePath)) { + try { + for (const issue of issues) { + // @migration/arkui-data-observation规则的自动修复是在定义处,存在跨文件场景 + const actualFilePath = path.normalize(issue.defect.mergeKey.split('%')[0]); + if (path.normalize(actualFilePath) !== path.normalize(filePath)) { + if (!fs.existsSync(actualFilePath)) { + continue; + } + lineList = await FileUtils.readLinesFromFile(actualFilePath); + } + // 有些特殊规则允许返回行列号为0 + if (issue.defect.reportLine < 0 || issue.defect.reportLine - 1 > lineList.length) { continue; } - lineList = await FileUtils.readLinesFromFile(actualFilePath); - } - // 有些特殊规则允许返回行列号为0 - if (issue.defect.reportLine < 0 || issue.defect.reportLine - 1 > lineList.length) { - continue; - } - const text = lineList[issue.defect.reportLine - 2]; - if (!isDisableIssue(text, issue.defect.ruleId)) { - filtedIssues.push(issue); + const text = lineList[issue.defect.reportLine - 2]; + if (!isDisableIssue(text, issue.defect.ruleId)) { + filtedIssues.push(issue); + } } + } catch (e) { + logger.error(e); } return filtedIssues; } diff --git a/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts b/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts index f17425f284605ab9f4cd9738a2ec9fc9c72121ba..a69df56e6afb4c77b4338e97aefb530e8d505f6f 100644 --- a/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts +++ b/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts @@ -67,12 +67,16 @@ export class FileUtils { let result: string[] = []; for (const filePath of fileList) { if (!ignoreGlob?.matchGlob(filePath) && fileGlob.matchGlob(filePath)) { - // 读取file文件内容首行,若为屏蔽行则跳过 - const firstLineText = await this.readLinesFromFile(filePath, 1); - if (firstLineText.includes(DisableText.FILE_DISABLE_TEXT)) { - continue; + try { + // 读取file文件内容首行,若为屏蔽行则跳过 + const firstLineText = await this.readLinesFromFile(filePath, 1); + if (firstLineText.includes(DisableText.FILE_DISABLE_TEXT)) { + continue; + } + result.push(filePath); + } catch (e) { + logger.error(e); } - result.push(filePath); } } return result; @@ -310,4 +314,4 @@ export class FileUtils { export enum WriteFileMode { OVERWRITE, APPEND -} +} \ No newline at end of file