From aabe0e1b0882c88703f464e90f723d90b3f5d783 Mon Sep 17 00:00:00 2001 From: fanjiaojiao0729 Date: Fri, 8 Dec 2023 10:22:32 +0800 Subject: [PATCH] =?UTF-8?q?new=20api=20check=E5=B7=A5=E5=85=B7=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D-=E7=BB=A7=E6=89=BF=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fanjiaojiao0729 --- .../coreImpl/checker/src/api_check_plugin.ts | 20 +++++++- .../coreImpl/checker/src/tag_inherit_check.ts | 51 +++++++++++-------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/build-tools/dts_parser/src/coreImpl/checker/src/api_check_plugin.ts b/build-tools/dts_parser/src/coreImpl/checker/src/api_check_plugin.ts index ce694c7733..5d36b6fab3 100644 --- a/build-tools/dts_parser/src/coreImpl/checker/src/api_check_plugin.ts +++ b/build-tools/dts_parser/src/coreImpl/checker/src/api_check_plugin.ts @@ -40,6 +40,7 @@ import { CheckHump } from './check_hump'; import { EventMethodChecker } from './event_method_check'; import { EventMethodData } from '../../../typedef/checker/event_method_check_interface'; import { ApiChangeCheck } from './check_api_diff'; +import { TagInheritCheck } from './tag_inherit_check'; export class Check { /** @@ -122,14 +123,13 @@ export class Check { // legality check const tagLegalityCheckResult: ErrorTagFormat[] = LegalityCheck.apiLegalityCheck(singleApi, apiJsdoc); // order check - // console.log('name=',singleApi.getApiName()) const orderCheckResult: ErrorTagFormat = OrderCheck.orderCheck(apiJsdoc); - // api naming check const namingCheckResult: ErrorTagFormat = ApiNamingCheck.namingCheck(singleApi); // tags name check const tagNamseCheckResult: ErrorTagFormat = TagNameCheck.tagNameCheck(apiJsdoc); // tags inherit check + const tagInheritCheckResult: ErrorTagFormat = TagInheritCheck.tagInheritCheck(singleApi); // tags value check const tagValueCheckResult: ErrorTagFormat[] = TagValueCheck.tagValueCheck(singleApi, apiJsdoc); // tags repeat check @@ -200,6 +200,22 @@ export class Check { compositiveLocalResult ); } + if (!tagInheritCheckResult.state) { + AddErrorLogs.addAPICheckErrorLogs( + ErrorID.WRONG_SCENE_ID, + ErrorLevel.MIDDLE, + singleApi.getFilePath(), + singleApi.getPos(), + ErrorType.WRONG_SCENE, + LogType.LOG_JSDOC, + toNumber(apiJsdoc.since), + singleApi.getApiName(), + singleApi.getDefinedText(), + tagInheritCheckResult.errorInfo, + compositiveResult, + compositiveLocalResult + ); + } tagLegalityCheckResult.forEach((legalityResult) => { if (legalityResult.state === false) { AddErrorLogs.addAPICheckErrorLogs( diff --git a/build-tools/dts_parser/src/coreImpl/checker/src/tag_inherit_check.ts b/build-tools/dts_parser/src/coreImpl/checker/src/tag_inherit_check.ts index 50e2abef44..ee671ab29d 100644 --- a/build-tools/dts_parser/src/coreImpl/checker/src/tag_inherit_check.ts +++ b/build-tools/dts_parser/src/coreImpl/checker/src/tag_inherit_check.ts @@ -16,17 +16,17 @@ import { ErrorMessage, ErrorTagFormat } from '../../../typedef/checker/result_type'; import { Comment } from '../../../typedef/parser/Comment'; import { CommonFunctions, inheritTagArr } from '../../../utils/checkUtils'; -import { ApiType, ClassInfo } from '../../../typedef/parser/ApiInfoDefination'; +import { ApiInfo, BasicApiInfo, ContainerApiInfo, containerApiTypes } from '../../../typedef/parser/ApiInfoDefination'; export class TagInheritCheck { /** * Tag's inheritance check. - * @param { ClassInfo } singleApi + * @param { ApiInfo } singleApi * @returns { ErrorTagFormat } */ - static tagInheritCheck(singleApi: ClassInfo): ErrorTagFormat { + static tagInheritCheck(singleApi: ApiInfo): ErrorTagFormat { const tagNameCheckResult: ErrorTagFormat = { - state: false, + state: true, errorInfo: '', }; const apiJsdoc: Comment.JsDocInfo | undefined = singleApi.getLastJsDocInfo(); @@ -41,23 +41,34 @@ export class TagInheritCheck { tagsInfo.forEach((tag) => { apiTagsName.push(tag.tag); }); - const parentApi: ClassInfo = singleApi.getParentApi() as ClassInfo; - if (parentApi.getApiType() !== ApiType.SOURCE_FILE) { - const parentApisJsdoc: Comment.CommentTag[] | undefined = parentApi.getLastJsDocInfo()?.tags; - if (parentApisJsdoc === undefined) { - return tagNameCheckResult; - } - parentApisJsdoc.find((parentApiJsdoc: Comment.CommentTag) => { - const flag: boolean = inheritTagArr.includes(parentApiJsdoc.tag) && !apiTagsName.includes(parentApiJsdoc.tag); - if (flag) { - tagNameCheckResult.state = true; - tagNameCheckResult.errorInfo = CommonFunctions.createErrorInfo(ErrorMessage.ERROR_INFO_INHERIT, [ - parentApiJsdoc.tag, - ]); - } - return flag; - }); + let parentApi: ContainerApiInfo = singleApi.getParentApi() as ContainerApiInfo; + if (containerApiTypes.has(parentApi.getApiType())) { + TagInheritCheck.checkParentJsdoc(parentApi, apiTagsName, tagNameCheckResult); } return tagNameCheckResult; } + + static checkParentJsdoc(basicApiInfo: BasicApiInfo | undefined, apiTagsName: string[], + tagNameCheckResult: ErrorTagFormat): boolean { + if (basicApiInfo === undefined || !containerApiTypes.has(basicApiInfo.getApiType())) { + return true; + } + const parentApi = basicApiInfo as ContainerApiInfo; + const parentApisJsdoc: Comment.CommentTag[] | undefined = parentApi.getLastJsDocInfo()?.tags; + if (parentApisJsdoc === undefined) { + return true; + } + let currTag: string = ''; + const hasInheritTag = parentApisJsdoc.some((parentApiJsdoc: Comment.CommentTag) => { + currTag = parentApiJsdoc.tag; + return inheritTagArr.includes(parentApiJsdoc.tag) && !apiTagsName.includes(parentApiJsdoc.tag); + }); + if (hasInheritTag) { + tagNameCheckResult.state = false; + tagNameCheckResult.errorInfo = CommonFunctions.createErrorInfo(ErrorMessage.ERROR_INFO_INHERIT, [currTag]); + return false; + } + const parentApis: BasicApiInfo | undefined = parentApi.getParentApi(); + return TagInheritCheck.checkParentJsdoc(parentApis, apiTagsName, tagNameCheckResult); + } } -- Gitee