Skip to content

Commit

Permalink
Ложное срабатывание проверки: module-self-reference #1162
Browse files Browse the repository at this point in the history
  • Loading branch information
marmyshev committed Oct 10, 2022
1 parent d868f33 commit 10f339e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
- Проверка: doc-comment-parameter-section не находит ошибку #1087
- Исправление пересечения родительских типов ОМД #1138
- Ложное срабатывание проверки module-structure-init-code-in-region #1155
- Ложное срабатывание проверки: module-self-reference #1162

## 0.2.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
package com.e1c.v8codestyle.bsl.check;

import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.DYNAMIC_FEATURE_ACCESS;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.CONTAINING_SOURCE_DERIVED_PROPERTY__CONTAINING_SOURCE;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.DERIVED_PROPERTY__SOURCE;

import java.util.Collection;
import java.util.Set;
Expand All @@ -22,11 +24,14 @@

import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess;
import com._1c.g5.v8.dt.bsl.model.Expression;
import com._1c.g5.v8.dt.bsl.model.FeatureEntry;
import com._1c.g5.v8.dt.bsl.model.Invocation;
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.bsl.resource.DynamicFeatureAccessComputer;
import com._1c.g5.v8.dt.mcore.ContainingSourceDerivedProperty;
import com._1c.g5.v8.dt.mcore.DerivedProperty;
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;
Expand Down Expand Up @@ -126,6 +131,27 @@ private boolean isReferenceExcessive(DynamicFeatureAccess dynamicFeatureAccess,
Module module = EcoreUtil2.getContainerOfType(dynamicFeatureAccess, Module.class);

return !(module.getModuleType() == ModuleType.FORM_MODULE
&& dynamicFeatureAccessComputer.resolveObject(dynamicFeatureAccess, module.environments()).isEmpty());
&& isEmptySource(dynamicFeatureAccessComputer.resolveObject(dynamicFeatureAccess, module.environments())));
}

// TODO replace this method with BslUtil after 2022.2+
private static boolean isEmptySource(Collection<FeatureEntry> features)
{
if (features.isEmpty())
{
return true;
}

return features.stream().allMatch(e -> {
if (e.getFeature() instanceof ContainingSourceDerivedProperty)
{
return e.getFeature().eGet(CONTAINING_SOURCE_DERIVED_PROPERTY__CONTAINING_SOURCE, false) == null;
}
else if (e.getFeature() instanceof DerivedProperty)
{
return e.getFeature().eGet(DERIVED_PROPERTY__SOURCE, false) == null;
}
return false;
});
}
}

0 comments on commit 10f339e

Please sign in to comment.