From dfcdd127fd8f6f832519431449a38d7f07d888ee Mon Sep 17 00:00:00 2001 From: Vadim Goncharov Date: Mon, 12 Jun 2023 05:17:51 +0300 Subject: [PATCH 1/4] =?UTF-8?q?#1329=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B5=20manager-module-named-self-reference?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправлена ошибка в проверке manager-module-named-self-reference: проверка срабатывала ложно, если в конфигурации есть несколько объектов метаданных с одинаковым наименованием. --- .../ManagerModuleNamedSelfReferenceCheck.java | 97 +++++++++++++++---- ...agerModuleNamedSelfReferenceCheckTest.java | 2 +- .../src/Catalogs/Catalog/ManagerModule.bsl | 8 -- .../ProductionStatus/ManagerModule.bsl | 10 ++ .../ProductionStatus.mdo} | 8 +- .../src/Configuration/Configuration.mdo | 3 +- .../ProductionStatus/ProductionStatus.mdo | 15 +++ 7 files changed, 110 insertions(+), 33 deletions(-) delete mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/Catalog/ManagerModule.bsl create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/ProductionStatus/ManagerModule.bsl rename tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/{Catalog/Catalog.mdo => ProductionStatus/ProductionStatus.mdo} (86%) create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Enums/ProductionStatus/ProductionStatus.mdo diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java index e8a4728e1..bdf9072fe 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2022, 1C-Soft LLC and others. + * Copyright (C) 2023, 1C-Soft LLC and others. * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -14,9 +14,17 @@ import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.DYNAMIC_FEATURE_ACCESS; +import java.util.Map; + import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; import org.eclipse.xtext.EcoreUtil2; -import org.eclipse.xtext.naming.IQualifiedNameProvider; +import org.eclipse.xtext.naming.IQualifiedNameConverter; +import org.eclipse.xtext.resource.IEObjectDescription; +import org.eclipse.xtext.scoping.IScope; +import org.eclipse.xtext.scoping.IScopeProvider; import com._1c.g5.v8.dt.bsl.documentation.comment.LinkPart; import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess; @@ -24,8 +32,9 @@ import com._1c.g5.v8.dt.bsl.model.Module; import com._1c.g5.v8.dt.bsl.model.ModuleType; import com._1c.g5.v8.dt.bsl.model.StaticFeatureAccess; -import com._1c.g5.v8.dt.common.StringUtils; +import com._1c.g5.v8.dt.core.naming.ITopObjectFqnGenerator; import com._1c.g5.v8.dt.lcore.util.CaseInsensitiveString; +import com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage; import com.e1c.g5.v8.dt.check.CheckComplexity; import com.e1c.g5.v8.dt.check.ICheckParameters; import com.e1c.g5.v8.dt.check.components.BasicCheck; @@ -33,6 +42,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueType; import com.e1c.v8codestyle.check.StandardCheckExtension; import com.e1c.v8codestyle.internal.bsl.BslPlugin; +import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; /** @@ -46,12 +56,41 @@ public class ManagerModuleNamedSelfReferenceCheck { private static final String CHECK_ID = "manager-module-named-self-reference"; //$NON-NLS-1$ - private final IQualifiedNameProvider bslQualifiedNameProvider; - + private final IScopeProvider scopeProvider; + + private final IQualifiedNameConverter qualifiedNameConverter; + + private final ITopObjectFqnGenerator topObjectFqnGenerator; + + private static final Map MANAGERS_FOR_MDOBJECT = new ImmutableMap.Builder() + .put(MdClassPackage.Literals.CONFIGURATION__CATALOGS, MdClassPackage.Literals.CATALOG) + .put(MdClassPackage.Literals.CONFIGURATION__DOCUMENTS, MdClassPackage.Literals.DOCUMENT) + .put(MdClassPackage.Literals.CONFIGURATION__DOCUMENT_JOURNALS, MdClassPackage.Literals.DOCUMENT_JOURNAL) + .put(MdClassPackage.Literals.CONFIGURATION__ENUMS, MdClassPackage.Literals.ENUM) + .put(MdClassPackage.Literals.CONFIGURATION__REPORTS, MdClassPackage.Literals.REPORT) + .put(MdClassPackage.Literals.CONFIGURATION__DATA_PROCESSORS, MdClassPackage.Literals.DATA_PROCESSOR) + .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_CHARACTERISTIC_TYPES, MdClassPackage.Literals.CHART_OF_CHARACTERISTIC_TYPES) + .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_ACCOUNTS, MdClassPackage.Literals.CHART_OF_ACCOUNTS) + .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_CALCULATION_TYPES, MdClassPackage.Literals.CHART_OF_CALCULATION_TYPES) + .put(MdClassPackage.Literals.CONFIGURATION__INFORMATION_REGISTERS, MdClassPackage.Literals.INFORMATION_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__ACCUMULATION_REGISTERS, MdClassPackage.Literals.ACCUMULATION_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__ACCOUNTING_REGISTERS, MdClassPackage.Literals.ACCOUNTING_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__CALCULATION_REGISTERS, MdClassPackage.Literals.CALCULATION_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__BUSINESS_PROCESSES, MdClassPackage.Literals.BUSINESS_PROCESS) + .put(MdClassPackage.Literals.CONFIGURATION__TASKS, MdClassPackage.Literals.TASK) + .put(MdClassPackage.Literals.CONFIGURATION__EXCHANGE_PLANS, MdClassPackage.Literals.EXCHANGE_PLAN) + .put(MdClassPackage.Literals.CONFIGURATION__EXTERNAL_DATA_SOURCES, MdClassPackage.Literals.EXTERNAL_DATA_SOURCE) + .build(); + + @Inject - public ManagerModuleNamedSelfReferenceCheck(IQualifiedNameProvider bslQualifiedNameProvider) + public ManagerModuleNamedSelfReferenceCheck(IScopeProvider scopeProvider, + IQualifiedNameConverter qualifiedNameConverter, + ITopObjectFqnGenerator topObjectFqnGenerator) { - this.bslQualifiedNameProvider = bslQualifiedNameProvider; + this.scopeProvider = scopeProvider; + this.qualifiedNameConverter = qualifiedNameConverter; + this.topObjectFqnGenerator = topObjectFqnGenerator; } @Override @@ -69,6 +108,7 @@ protected void configureCheck(CheckConfigurer builder) .severity(IssueSeverity.MINOR) .issueType(IssueType.CODE_STYLE) .extension(new StandardCheckExtension(467, getCheckId(), BslPlugin.PLUGIN_ID)) + .extension(ModuleTypeFilter.onlyTypes(ModuleType.MANAGER_MODULE)) .module() .checkedObjectType(DYNAMIC_FEATURE_ACCESS); } @@ -80,8 +120,7 @@ protected void check(Object object, ResultAcceptor resultAceptor, ICheckParamete Expression featureAccessSource = ((DynamicFeatureAccess)object).getSource(); Module module = EcoreUtil2.getContainerOfType(featureAccessSource, Module.class); - if (monitor.isCanceled() || !(featureAccessSource instanceof DynamicFeatureAccess) - || module.getModuleType() != ModuleType.MANAGER_MODULE) + if (monitor.isCanceled() || !(featureAccessSource instanceof DynamicFeatureAccess)) { return; } @@ -95,23 +134,43 @@ protected void check(Object object, ResultAcceptor resultAceptor, ICheckParamete } StaticFeatureAccess managerType = (StaticFeatureAccess)managerTypeExpression; - - if (isManagerTypeValid(managerType) && isReferenceExcessive(source, module)) + + EReference eRef = getConfigurationMdObjectRef(managerType); + if (monitor.isCanceled() || eRef == null) + { + return; + } + + IEObjectDescription objectDesc = getObjectFromScope(source, eRef); + if (monitor.isCanceled() || objectDesc == null) + { + return; + } + + EObject eObject = objectDesc.getEObjectOrProxy(); + if (!monitor.isCanceled() && eObject.equals(module.getOwner())) { resultAceptor.addIssue(Messages.ManagerModuleNamedSelfReferenceCheck_issue, source); } } - - private boolean isManagerTypeValid(StaticFeatureAccess managerType) + + private EReference getConfigurationMdObjectRef(StaticFeatureAccess managerType) { + EReference result = null; CaseInsensitiveString managerTypeName = new CaseInsensitiveString(managerType.getName()); - return LinkPart.MD_OBJECT_MANAGERS.containsKey(managerTypeName) - || LinkPart.MD_OBJECT_MANAGERS_RU.containsKey(managerTypeName); + result = LinkPart.MD_OBJECT_MANAGERS.get(managerTypeName); + if (result == null) + { + result = LinkPart.MD_OBJECT_MANAGERS_RU.get(managerTypeName); + } + return result; } - - private boolean isReferenceExcessive(DynamicFeatureAccess source, Module module) + + private IEObjectDescription getObjectFromScope(DynamicFeatureAccess source, EReference reference) { - return StringUtils.equals(bslQualifiedNameProvider.getFullyQualifiedName(module).getSegment(1), - source.getName()); + IScope scope = scopeProvider.getScope(source, reference); + String fqn = topObjectFqnGenerator.generateStandaloneObjectFqn(MANAGERS_FOR_MDOBJECT.get(reference), source.getName()); + return scope.getSingleElement(qualifiedNameConverter.toQualifiedName(fqn)); } + } diff --git a/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java index 87c2b7799..84949c9a9 100644 --- a/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java +++ b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java @@ -34,7 +34,7 @@ public class ManagerModuleNamedSelfReferenceCheckTest { private static final String PROJECT_NAME = "ManagerModuleNamedSelfReferenceCheck"; - private static final String MANAGER_MODULE_FILE_NAME = "/src/Catalogs/Catalog/ManagerModule.bsl"; + private static final String MANAGER_MODULE_FILE_NAME = "/src/Catalogs/ProductionStatus/ManagerModule.bsl"; public ManagerModuleNamedSelfReferenceCheckTest() { diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/Catalog/ManagerModule.bsl b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/Catalog/ManagerModule.bsl deleted file mode 100644 index 653d60e3d..000000000 --- a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/Catalog/ManagerModule.bsl +++ /dev/null @@ -1,8 +0,0 @@ -Функция МояФункция() экспорт - Возврат 1; -КонецФункции - -Процедура Тест() - Catalogs.Catalog.МойРеквизит = Catalogs.Catalog.МояФункция(); - Справочники.Catalog.МойРеквизит = Справочники.Catalog.МояФункция(); -КонецПроцедуры \ No newline at end of file diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/ProductionStatus/ManagerModule.bsl b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/ProductionStatus/ManagerModule.bsl new file mode 100644 index 000000000..e38bb94b3 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/ProductionStatus/ManagerModule.bsl @@ -0,0 +1,10 @@ +Функция МояФункция() экспорт + Возврат 1; +КонецФункции + +Процедура Тест() + Catalogs.ProductionStatus.МойРеквизит = Catalogs.ProductionStatus.МояФункция(); + Справочники.ProductionStatus.МойРеквизит = Справочники.ProductionStatus.МояФункция(); + Переменная1 = Enums.ProductionStatus.EmptyRef(); + Переменная1 = Перечисления.ProductionStatus.ПустаяСсылка(); +КонецПроцедуры \ No newline at end of file diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/Catalog/Catalog.mdo b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/ProductionStatus/ProductionStatus.mdo similarity index 86% rename from tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/Catalog/Catalog.mdo rename to tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/ProductionStatus/ProductionStatus.mdo index 9f946d0a1..f92bba277 100644 --- a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/Catalog/Catalog.mdo +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Catalogs/ProductionStatus/ProductionStatus.mdo @@ -7,14 +7,14 @@ - Catalog + ProductionStatus en - Catalog + Production status true - Catalog.Catalog.StandardAttribute.Code - Catalog.Catalog.StandardAttribute.Description + Catalog.ProductionStatus.StandardAttribute.Code + Catalog.ProductionStatus.StandardAttribute.Description DontUse Use Managed diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Configuration/Configuration.mdo b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Configuration/Configuration.mdo index 9e12d4621..b6c1f0952 100644 --- a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Configuration/Configuration.mdo +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Configuration/Configuration.mdo @@ -38,5 +38,6 @@ en - Catalog.Catalog + Catalog.ProductionStatus + Enum.ProductionStatus diff --git a/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Enums/ProductionStatus/ProductionStatus.mdo b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Enums/ProductionStatus/ProductionStatus.mdo new file mode 100644 index 000000000..c6e714d80 --- /dev/null +++ b/tests/com.e1c.v8codestyle.bsl.itests/workspace/ManagerModuleNamedSelfReferenceCheck/src/Enums/ProductionStatus/ProductionStatus.mdo @@ -0,0 +1,15 @@ + + + + + + + + ProductionStatus + + en + Production status + + true + BothWays + From 1f0aac659103e39de0df1e7a9107559bc1c2f36f Mon Sep 17 00:00:00 2001 From: Vadim Goncharov Date: Mon, 12 Jun 2023 05:20:50 +0300 Subject: [PATCH 2/4] =?UTF-8?q?#1329=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ManagerModuleNamedSelfReferenceCheck.java | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java index bdf9072fe..23d4fb3ca 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java @@ -61,32 +61,33 @@ public class ManagerModuleNamedSelfReferenceCheck private final IQualifiedNameConverter qualifiedNameConverter; private final ITopObjectFqnGenerator topObjectFqnGenerator; - + private static final Map MANAGERS_FOR_MDOBJECT = new ImmutableMap.Builder() - .put(MdClassPackage.Literals.CONFIGURATION__CATALOGS, MdClassPackage.Literals.CATALOG) - .put(MdClassPackage.Literals.CONFIGURATION__DOCUMENTS, MdClassPackage.Literals.DOCUMENT) - .put(MdClassPackage.Literals.CONFIGURATION__DOCUMENT_JOURNALS, MdClassPackage.Literals.DOCUMENT_JOURNAL) - .put(MdClassPackage.Literals.CONFIGURATION__ENUMS, MdClassPackage.Literals.ENUM) - .put(MdClassPackage.Literals.CONFIGURATION__REPORTS, MdClassPackage.Literals.REPORT) - .put(MdClassPackage.Literals.CONFIGURATION__DATA_PROCESSORS, MdClassPackage.Literals.DATA_PROCESSOR) - .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_CHARACTERISTIC_TYPES, MdClassPackage.Literals.CHART_OF_CHARACTERISTIC_TYPES) - .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_ACCOUNTS, MdClassPackage.Literals.CHART_OF_ACCOUNTS) - .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_CALCULATION_TYPES, MdClassPackage.Literals.CHART_OF_CALCULATION_TYPES) - .put(MdClassPackage.Literals.CONFIGURATION__INFORMATION_REGISTERS, MdClassPackage.Literals.INFORMATION_REGISTER) - .put(MdClassPackage.Literals.CONFIGURATION__ACCUMULATION_REGISTERS, MdClassPackage.Literals.ACCUMULATION_REGISTER) - .put(MdClassPackage.Literals.CONFIGURATION__ACCOUNTING_REGISTERS, MdClassPackage.Literals.ACCOUNTING_REGISTER) - .put(MdClassPackage.Literals.CONFIGURATION__CALCULATION_REGISTERS, MdClassPackage.Literals.CALCULATION_REGISTER) - .put(MdClassPackage.Literals.CONFIGURATION__BUSINESS_PROCESSES, MdClassPackage.Literals.BUSINESS_PROCESS) - .put(MdClassPackage.Literals.CONFIGURATION__TASKS, MdClassPackage.Literals.TASK) - .put(MdClassPackage.Literals.CONFIGURATION__EXCHANGE_PLANS, MdClassPackage.Literals.EXCHANGE_PLAN) - .put(MdClassPackage.Literals.CONFIGURATION__EXTERNAL_DATA_SOURCES, MdClassPackage.Literals.EXTERNAL_DATA_SOURCE) - .build(); - - + .put(MdClassPackage.Literals.CONFIGURATION__CATALOGS, MdClassPackage.Literals.CATALOG) + .put(MdClassPackage.Literals.CONFIGURATION__DOCUMENTS, MdClassPackage.Literals.DOCUMENT) + .put(MdClassPackage.Literals.CONFIGURATION__DOCUMENT_JOURNALS, MdClassPackage.Literals.DOCUMENT_JOURNAL) + .put(MdClassPackage.Literals.CONFIGURATION__ENUMS, MdClassPackage.Literals.ENUM) + .put(MdClassPackage.Literals.CONFIGURATION__REPORTS, MdClassPackage.Literals.REPORT) + .put(MdClassPackage.Literals.CONFIGURATION__DATA_PROCESSORS, MdClassPackage.Literals.DATA_PROCESSOR) + .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_CHARACTERISTIC_TYPES, + MdClassPackage.Literals.CHART_OF_CHARACTERISTIC_TYPES) + .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_ACCOUNTS, MdClassPackage.Literals.CHART_OF_ACCOUNTS) + .put(MdClassPackage.Literals.CONFIGURATION__CHARTS_OF_CALCULATION_TYPES, + MdClassPackage.Literals.CHART_OF_CALCULATION_TYPES) + .put(MdClassPackage.Literals.CONFIGURATION__INFORMATION_REGISTERS, MdClassPackage.Literals.INFORMATION_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__ACCUMULATION_REGISTERS, + MdClassPackage.Literals.ACCUMULATION_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__ACCOUNTING_REGISTERS, MdClassPackage.Literals.ACCOUNTING_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__CALCULATION_REGISTERS, MdClassPackage.Literals.CALCULATION_REGISTER) + .put(MdClassPackage.Literals.CONFIGURATION__BUSINESS_PROCESSES, MdClassPackage.Literals.BUSINESS_PROCESS) + .put(MdClassPackage.Literals.CONFIGURATION__TASKS, MdClassPackage.Literals.TASK) + .put(MdClassPackage.Literals.CONFIGURATION__EXCHANGE_PLANS, MdClassPackage.Literals.EXCHANGE_PLAN) + .put(MdClassPackage.Literals.CONFIGURATION__EXTERNAL_DATA_SOURCES, MdClassPackage.Literals.EXTERNAL_DATA_SOURCE) + .build(); + @Inject public ManagerModuleNamedSelfReferenceCheck(IScopeProvider scopeProvider, - IQualifiedNameConverter qualifiedNameConverter, - ITopObjectFqnGenerator topObjectFqnGenerator) + IQualifiedNameConverter qualifiedNameConverter, ITopObjectFqnGenerator topObjectFqnGenerator) { this.scopeProvider = scopeProvider; this.qualifiedNameConverter = qualifiedNameConverter; @@ -134,26 +135,26 @@ protected void check(Object object, ResultAcceptor resultAceptor, ICheckParamete } StaticFeatureAccess managerType = (StaticFeatureAccess)managerTypeExpression; - - EReference eRef = getConfigurationMdObjectRef(managerType); - if (monitor.isCanceled() || eRef == null) + + EReference eRef = getConfigurationMdObjectRef(managerType); + if (monitor.isCanceled() || eRef == null) { return; } - + IEObjectDescription objectDesc = getObjectFromScope(source, eRef); if (monitor.isCanceled() || objectDesc == null) { return; } - + EObject eObject = objectDesc.getEObjectOrProxy(); if (!monitor.isCanceled() && eObject.equals(module.getOwner())) { resultAceptor.addIssue(Messages.ManagerModuleNamedSelfReferenceCheck_issue, source); } } - + private EReference getConfigurationMdObjectRef(StaticFeatureAccess managerType) { EReference result = null; @@ -165,12 +166,13 @@ private EReference getConfigurationMdObjectRef(StaticFeatureAccess managerType) } return result; } - + private IEObjectDescription getObjectFromScope(DynamicFeatureAccess source, EReference reference) { IScope scope = scopeProvider.getScope(source, reference); - String fqn = topObjectFqnGenerator.generateStandaloneObjectFqn(MANAGERS_FOR_MDOBJECT.get(reference), source.getName()); + String fqn = + topObjectFqnGenerator.generateStandaloneObjectFqn(MANAGERS_FOR_MDOBJECT.get(reference), source.getName()); return scope.getSingleElement(qualifiedNameConverter.toQualifiedName(fqn)); } - + } From c451559b762cd85e830f3527da8c6d55196d08b0 Mon Sep 17 00:00:00 2001 From: Vadim Goncharov Date: Mon, 12 Jun 2023 05:44:38 +0300 Subject: [PATCH 3/4] =?UTF-8?q?#1329=20=D0=9F=D0=BE=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bsl/check/ManagerModuleNamedSelfReferenceCheck.java | 3 ++- .../check/itests/ManagerModuleNamedSelfReferenceCheckTest.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java index 23d4fb3ca..48561855d 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/ManagerModuleNamedSelfReferenceCheck.java @@ -46,9 +46,10 @@ import com.google.inject.Inject; /** - * CHeck self reference by name in manager modules. + * Check self reference by name in manager modules. * * @author Maxim Galios + * @author Vadim Goncharov * */ public class ManagerModuleNamedSelfReferenceCheck diff --git a/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java index 84949c9a9..12d4a538f 100644 --- a/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java +++ b/tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/ManagerModuleNamedSelfReferenceCheckTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2022, 1C-Soft LLC and others. + * Copyright (C) 2023, 1C-Soft LLC and others. * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 From 9c84501a47a6e92c372463ea79ffa980e9b16b2e Mon Sep 17 00:00:00 2001 From: Vadim Goncharov Date: Mon, 19 Jun 2023 06:36:30 +0300 Subject: [PATCH 4/4] Merge remote-tracking branch 'upstream/master' into feature/1329-manager-module-named-self-reference-bug