From 5b3a7731f9482844a079e69147f097d4e6b98676 Mon Sep 17 00:00:00 2001 From: Dmitriy Marmyshev Date: Sat, 25 Jun 2022 19:44:08 +0300 Subject: [PATCH] =?UTF-8?q?993=20=D0=A3=D1=87=D0=B5=D1=82=20=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BA=D0=B8=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=86=D0=B5=20?= =?UTF-8?q?=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20=D0=BD=D0=B0=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- .../check/AbstractDocCommentTypeCheck.java | 7 ++-- .../resources/doc-comment-ref-link.bsl | 30 ++++++++++++----- .../check/itests/RefLinkPartCheckTest.java | 33 +++++++++++++++++-- 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b056538..b7f07cc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,7 +41,7 @@ ### Исправленные ошибки - Ложное срабатывание проверки: invocation-parameter-type-intersect - для методов с несколькими вариантами вызова - +- Ложное срабатывание проверки: doc-comment-ref-link Учет точки в конце ссылки на метод ## 0.2.0 diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/comment/check/AbstractDocCommentTypeCheck.java b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/comment/check/AbstractDocCommentTypeCheck.java index f2920ed9..3e578e21 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/comment/check/AbstractDocCommentTypeCheck.java +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/comment/check/AbstractDocCommentTypeCheck.java @@ -149,10 +149,9 @@ public abstract class AbstractDocCommentTypeCheck protected Optional getLinkPartLastObject(LinkPart linkPart, IScopeProvider scopeProvider, EObject context) { // get object of last segment of the link to method/parameter, - // without final brackets "(See ModuleName.MethodName.)". - if (linkPart.getInitialContent().startsWith("(") //$NON-NLS-1$ - && linkPart.getPartsWithOffset().size() > 1 - && (linkPart.getPartsWithOffset().get(linkPart.getPartsWithOffset().size() - 1)).getFirst().isEmpty()) + // without final brackets "(See ModuleName.MethodName.)", or witn ending dot "See ModuleName.MethodName." + if (linkPart.getPartsWithOffset().size() > 1 && (linkPart.getInitialContent().startsWith("(") //$NON-NLS-1$ + || (linkPart.getPartsWithOffset().get(linkPart.getPartsWithOffset().size() - 1)).getFirst().isEmpty())) { return Optional.ofNullable( linkPart.getActualObjectForPart(linkPart.getPartsWithOffset().size() - 2, scopeProvider, context)); diff --git a/tests/com.e1c.v8codestyle.bsl.itests/resources/doc-comment-ref-link.bsl b/tests/com.e1c.v8codestyle.bsl.itests/resources/doc-comment-ref-link.bsl index ab88c5aa..c8a1eaed 100644 --- a/tests/com.e1c.v8codestyle.bsl.itests/resources/doc-comment-ref-link.bsl +++ b/tests/com.e1c.v8codestyle.bsl.itests/resources/doc-comment-ref-link.bsl @@ -1,15 +1,29 @@ +// Non complaint. +// // Parameters: -// Parameters - See Complaint.UnknownParameter -Procedure NonComplaint(Parameters) Export - // empty -EndProcedure +// LinkToMethodParameter - See Complaint.UnknownParameter +// LinkToMethod - See NonComplaint() +// LinkToExtMethod - See Catalogs.Products.NonComplaint() +// +// Returns: +// AnyRef - any ref +Function NonComplaint(LinkToMethodParameter, LinkToMethod, LinkToExtMethod) Export + // empty +EndFunction // See this description // // Parameters: -// Parameters - Here valid web-link See https://1c.ru -// LinkToMethod - See NonComplaint() -Procedure Complaint(Parameters, LinkToMethod) Export - // empty +// WebLink - String - Here valid web-link See https://1c.ru +// LinkToMethod - See NonComplaint +// LinkToExtMethod - See Catalogs.Products.NonComplaint +// LinkToParameter - See NonComplaint.LinkToExtMethod +Procedure Complaint(WebLink, LinkToMethod, LinkToExtMethod, LinkToParameter) Export + // empty +EndProcedure + +// See Catalogs.Products.Complaint. +Procedure Complaint2(WebLink, LinkToMethod, LinkToExtMethod) + // empty EndProcedure diff --git a/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/comment/check/itests/RefLinkPartCheckTest.java b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/comment/check/itests/RefLinkPartCheckTest.java index d4a270c1..7fc2cf88 100644 --- a/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/comment/check/itests/RefLinkPartCheckTest.java +++ b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/comment/check/itests/RefLinkPartCheckTest.java @@ -15,6 +15,8 @@ package com.e1c.v8codestyle.bsl.comment.check.itests; import static org.junit.Assert.assertEquals; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import org.junit.Test; @@ -31,12 +33,33 @@ import com.e1c.v8codestyle.bsl.comment.check.RefLinkPartCheck; public class RefLinkPartCheckTest extends AbstractSingleModuleTestBase { + private static final String PROJECT_NAME = "EventHandlerBooleanParam"; + + private static final String MODULE_FILE_NAME = "/src/Catalogs/Products/ManagerModule.bsl"; public RefLinkPartCheckTest() { super(RefLinkPartCheck.class); } + @Override + protected boolean enableCleanUp() + { + return true; + } + + @Override + protected String getTestConfigurationName() + { + return PROJECT_NAME; + } + + @Override + protected String getModuleFileName() + { + return MODULE_FILE_NAME; + } + /** * Test the documentation comment contains valid links * @@ -48,8 +71,12 @@ public class RefLinkPartCheckTest updateModule(FOLDER_RESOURCE + "doc-comment-ref-link.bsl"); List markers = getModuleMarkers(); - assertEquals(1, markers.size()); - Marker marker = markers.get(0); - assertEquals("3", marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY)); + assertEquals(2, markers.size()); + + Set lines = markers.stream() + .map(marker -> marker.getExtraInfo().get(IExtraInfoKeys.TEXT_EXTRA_INFO_LINE_KEY)) + .collect(Collectors.toSet()); + + assertEquals(Set.of("5", "7"), lines); } }