Skip to content

Commit 6baef11

Browse files
committed
Проверки корня конфигурации
1 parent ae145e2 commit 6baef11

File tree

41 files changed

+1351
-39
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1351
-39
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/**
2+
*
3+
*/
4+
package com.e1c.v8codestyle.md.check;
5+
6+
import java.text.MessageFormat;
7+
import java.util.regex.Pattern;
8+
9+
import org.eclipse.core.runtime.IProgressMonitor;
10+
import org.eclipse.emf.common.util.EMap;
11+
import org.eclipse.emf.ecore.EObject;
12+
import org.eclipse.emf.ecore.EReference;
13+
14+
import com._1c.g5.v8.dt.common.StringUtils;
15+
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
16+
import com.e1c.g5.v8.dt.check.CheckComplexity;
17+
import com.e1c.g5.v8.dt.check.ICheckParameters;
18+
import com.e1c.g5.v8.dt.check.components.BasicCheck;
19+
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
20+
import com.e1c.g5.v8.dt.check.settings.IssueType;
21+
22+
/**
23+
* The abstract class to check UI feature of EMF object that is not empty or match pattern.
24+
*
25+
* @author Dmitriy Marmyshev
26+
*/
27+
public abstract class AbstractUiStringCheck
28+
extends BasicCheck
29+
{
30+
protected static final String PARAM_UI_STRING_PATTERN = "uiStringPattern"; //$NON-NLS-1$
31+
32+
protected final EReference uiStringRef;
33+
34+
private final IV8ProjectManager v8ProjectManager;
35+
36+
protected AbstractUiStringCheck(EReference uiStringRef, IV8ProjectManager v8ProjectManager)
37+
{
38+
this.uiStringRef = uiStringRef;
39+
this.v8ProjectManager = v8ProjectManager;
40+
}
41+
42+
@Override
43+
protected void configureCheck(CheckConfigurer builder)
44+
{
45+
builder.complexity(CheckComplexity.NORMAL)
46+
.severity(IssueSeverity.MINOR)
47+
.issueType(IssueType.UI_STYLE)
48+
.extension(new MdUiStringExtension())
49+
.parameter(PARAM_UI_STRING_PATTERN, String.class, getUiStringPatternDefaultValue(),
50+
getUiStringPatternTitle());
51+
}
52+
53+
protected String getUiStringPatternDefaultValue()
54+
{
55+
return StringUtils.EMPTY;
56+
}
57+
58+
protected String getUiStringPatternTitle()
59+
{
60+
return "UI string pattern";
61+
}
62+
63+
@Override
64+
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
65+
IProgressMonitor monitor)
66+
{
67+
EObject eObject = (EObject)object;
68+
Object rawValue = eObject.eGet(uiStringRef);
69+
if (!(rawValue instanceof EMap))
70+
{
71+
return;
72+
}
73+
74+
@SuppressWarnings("unchecked")
75+
EMap<String, String> uiString = (EMap<String, String>)rawValue;
76+
77+
if (uiString.isEmpty())
78+
{
79+
resultAceptor.addIssue(getUiStringIsEmptyForAll(), uiStringRef);
80+
}
81+
else
82+
{
83+
String uiStringPatternText = parameters.getString(PARAM_UI_STRING_PATTERN);
84+
Pattern uiStringPattern = StringUtils.isBlank(uiStringPatternText) ? null
85+
: Pattern.compile(uiStringPatternText, Pattern.UNICODE_CHARACTER_CLASS);
86+
87+
for (String languageCode : MdUiStringExtension.getLanguageCodes(parameters, eObject, v8ProjectManager))
88+
{
89+
String value = uiString.get(languageCode);
90+
if (StringUtils.isBlank(value))
91+
{
92+
resultAceptor.addIssue(getUiStringIsEmpty(languageCode), uiStringRef);
93+
}
94+
else
95+
{
96+
if (uiStringPattern != null && !uiStringPattern.matcher(value).matches())
97+
{
98+
resultAceptor.addIssue(getUiStringShouldMatchPattern(languageCode, uiStringPatternText),
99+
uiStringRef);
100+
}
101+
}
102+
}
103+
}
104+
}
105+
106+
protected String getUiStringIsEmptyForAll()
107+
{
108+
return "UI string is empty for all languages";
109+
}
110+
111+
protected String getUiStringIsEmpty(String languageCode)
112+
{
113+
return MessageFormat.format("UI string for language \"{0}\" is empty", languageCode);
114+
}
115+
116+
protected String getUiStringShouldMatchPattern(String languageCode, String patternText)
117+
{
118+
return MessageFormat.format("UI string for language \"{0}\" should match pattern: \"{1}\"", languageCode,
119+
patternText);
120+
}
121+
122+
}

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/DbObjectAnyRefTypeCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ protected void configureCheck(CheckConfigurer builder)
7676
.severity(IssueSeverity.MAJOR)
7777
.issueType(IssueType.PERFORMANCE)
7878
.extension(new StandardCheckExtension(728, getCheckId(), CorePlugin.PLUGIN_ID))
79-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
79+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
8080
.topObject(BASIC_DB_OBJECT)
8181
.containment(TYPE_DESCRIPTION)
8282
.features(TYPE_DESCRIPTION__TYPES);

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/DbObjectMaxNumberLengthCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ protected void configureCheck(CheckConfigurer builder)
7272
.severity(IssueSeverity.MAJOR)
7373
.issueType(IssueType.PORTABILITY)
7474
.extension(new StandardCheckExtension(467, getCheckId(), CorePlugin.PLUGIN_ID))
75-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
75+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
7676
.parameter(MAX_LENGTH, Integer.class, MAX_LENGTH_DEFAULT, Messages.DbObjectMaxNumberLengthCheck_parameter);
7777

7878
builder.topObject(BASIC_DB_OBJECT)

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/DbObjectRefNonRefTypesCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ protected void configureCheck(CheckConfigurer builder)
8686
.severity(IssueSeverity.MAJOR)
8787
.issueType(IssueType.PERFORMANCE)
8888
.extension(new StandardCheckExtension(728, getCheckId(), CorePlugin.PLUGIN_ID))
89-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
89+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
9090
.topObject(BASIC_DB_OBJECT)
9191
.containment(TYPE_DESCRIPTION)
9292
.features(TYPE_DESCRIPTION__TYPES);

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/MdListObjectPresentationCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ protected void configureCheck(CheckConfigurer builder)
8585
.extension(new TopObjectFilterExtension())
8686
.issueType(IssueType.UI_STYLE)
8787
.extension(new StandardCheckExtension(468, getCheckId(), CorePlugin.PLUGIN_ID))
88-
.extension(new SkipAdoptedInExtensionMdObjectExtension());
88+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance());
8989

9090
builder.topObject(BASIC_DB_OBJECT)
9191
.checkTop()

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/MdObjectAttributeCommentCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ protected void configureCheck(CheckConfigurer builder)
8585
.severity(IssueSeverity.MINOR)
8686
.issueType(IssueType.UI_STYLE)
8787
.extension(new StandardCheckExtension(531, getCheckId(), CorePlugin.PLUGIN_ID))
88-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
88+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
8989
.extension(new TopObjectFilterExtension())
9090
.parameter(PARAM_ATTRIBUTES_LIST, String.class, DEFAULT_ATTRIBUTES_LIST,
9191
Messages.MdObjectAttributeCommentCheck_Attribute_list);

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/MdObjectAttributeCommentNotExistCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ protected void configureCheck(CheckConfigurer builder)
8181
.severity(IssueSeverity.MINOR)
8282
.issueType(IssueType.UI_STYLE)
8383
.extension(new StandardCheckExtension(531, getCheckId(), CorePlugin.PLUGIN_ID))
84-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
84+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
8585
.extension(new TopObjectFilterExtension())
8686
.parameter(PARAM_ATTRIBUTE_NAMES_LIST, String.class, DEFAULT_ATTRIBUTE_NAMES_LIST,
8787
Messages.MdObjectAttributeCommentNotExist_Param_Attribute_name_list);

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/MdObjectNameLength.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ protected void configureCheck(CheckConfigurer builder)
6060
.extension(new TopObjectFilterExtension())
6161
.issueType(IssueType.PORTABILITY)
6262
.extension(new CommonSenseCheckExtension(getCheckId(), CorePlugin.PLUGIN_ID))
63-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
63+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
6464
.topObject(MD_OBJECT)
6565
.checkTop()
6666
.features(MD_OBJECT__NAME)

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/MdObjectNameUnallowedLetterCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ protected void configureCheck(CheckConfigurer builder)
5959
.extension(new TopObjectFilterExtension())
6060
.issueType(IssueType.UI_STYLE)
6161
.extension(new StandardCheckExtension(474, getCheckId(), CorePlugin.PLUGIN_ID))
62-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
62+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
6363
.topObject(MD_OBJECT)
6464
.features(MD_OBJECT__NAME, MD_OBJECT__SYNONYM, MD_OBJECT__COMMENT);
6565
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*******************************************************************************
2+
* Copyright (C) 2021, 1C-Soft LLC and others.
3+
*
4+
* This program and the accompanying materials are made
5+
* available under the terms of the Eclipse Public License 2.0
6+
* which is available at https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* 1C-Soft LLC - initial API and implementation
12+
*******************************************************************************/
13+
package com.e1c.v8codestyle.md.check;
14+
15+
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.MD_OBJECT;
16+
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.MD_OBJECT__SYNONYM;
17+
18+
import java.text.MessageFormat;
19+
20+
import org.eclipse.core.runtime.IProgressMonitor;
21+
22+
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
23+
import com._1c.g5.v8.dt.metadata.mdclass.Configuration;
24+
import com.e1c.g5.v8.dt.check.ICheckParameters;
25+
import com.e1c.v8codestyle.check.StandardCheckExtension;
26+
import com.e1c.v8codestyle.internal.md.CorePlugin;
27+
import com.google.inject.Inject;
28+
29+
/**
30+
* Check MD object synonym should not be empty or should match a pattern
31+
*
32+
* @author Dmitriy Marmyshev
33+
*/
34+
public final class MdObjectSynonymCheck
35+
extends AbstractUiStringCheck
36+
{
37+
private static final String CHECK_ID = "mdo-synonym"; //$NON-NLS-1$
38+
39+
@Inject
40+
public MdObjectSynonymCheck(IV8ProjectManager v8ProjectManager)
41+
{
42+
super(MD_OBJECT__SYNONYM, v8ProjectManager);
43+
}
44+
@Override
45+
public String getCheckId()
46+
{
47+
return CHECK_ID;
48+
}
49+
50+
@Override
51+
protected void configureCheck(CheckConfigurer builder)
52+
{
53+
super.configureCheck(builder);
54+
builder.title("Metada object synonym")
55+
.description("Metada object synonym")
56+
.extension(new StandardCheckExtension(474, getCheckId(), CorePlugin.PLUGIN_ID))
57+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
58+
.topObject(MD_OBJECT)
59+
.checkTop()
60+
.features(MD_OBJECT__SYNONYM);
61+
}
62+
63+
@Override
64+
protected String getUiStringPatternTitle()
65+
{
66+
return "Synonym pattern";
67+
}
68+
69+
@Override
70+
protected String getUiStringIsEmptyForAll()
71+
{
72+
return "Synonym is empty for all languages";
73+
}
74+
75+
@Override
76+
protected String getUiStringIsEmpty(String languageCode)
77+
{
78+
return MessageFormat.format("Synonym for language \"{0}\" is empty", languageCode);
79+
}
80+
81+
@Override
82+
protected String getUiStringShouldMatchPattern(String languageCode, String patternText)
83+
{
84+
return MessageFormat.format("Synonym for language \"{0}\" should match pattern: \"{1}\"", languageCode,
85+
patternText);
86+
}
87+
88+
@Override
89+
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
90+
IProgressMonitor monitor)
91+
{
92+
if (object instanceof Configuration)
93+
{
94+
// Skip here, there is another synonym check for Configuration
95+
return;
96+
}
97+
super.check(object, resultAceptor, parameters, monitor);
98+
}
99+
100+
}

bundles/com.e1c.v8codestyle.md/src/com/e1c/v8codestyle/md/check/MdStandardAttributeSynonymEmpty.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ protected void configureCheck(CheckConfigurer builder)
9595
.issueType(IssueType.UI_STYLE)
9696
.extension(new TopObjectFilterExtension())
9797
.extension(new StandardCheckExtension(474, getCheckId(), CorePlugin.PLUGIN_ID))
98-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
98+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
9999
.extension(new CatalogChangeExtension());
100100

101101
builder.topObject(CATALOG).containment(STANDARD_ATTRIBUTE).features(STANDARD_ATTRIBUTE__SYNONYM);

0 commit comments

Comments
 (0)