Skip to content

Commit 8ce5e5b

Browse files
committed
Проверки корня конфигурации
1 parent 1d3e0b5 commit 8ce5e5b

File tree

63 files changed

+1969
-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.

63 files changed

+1969
-39
lines changed

CHANGELOG.md

+22
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,20 @@
1111
#### Метаданные
1212

1313
- Превышена максимальная длина числовых данных (31 знак). #82
14+
- Не установлено свойство "Использовать управляемые формы в обычном приложении" для конфигурации. #67
15+
- Неверно указана информация об авторских правах. Должно начинаться с "Copyright © ООО "1С-Софт"". #111
16+
- Синоним должен оканчиваться на номер редакции.подредакции. #287
17+
- Не заполнен синоним конфигурации. #460
18+
- В имени конфигурации запрещено использовать слова "редакция" или "подредакция". #463
19+
- Неверно указан адрес информации о поставщике. Должен быть "http://www.1c.ru". #464
20+
- Неверно указан адрес информации о конфигурации. Должен начинаться с "http://v8.1c.ru/". #465
21+
- Неверно указан адрес каталога обновлений. Должен быть "http://downloads.v8.1c.ru/tmplts/". #466
22+
- Не задан синоним объекта метаданных. #582
23+
- Краткая информация отличается от синонима. #713
24+
- Подробная информация отличается от синонима. #714
25+
- Неверно указан поставщик. Должен быть "Фирма "1С"". #715
26+
- Неверно установлен номер версии. Он не должен быть вида 0.0.0.0, N.0.0.0, N.0.N.0 или N.0.0.N. #109
27+
- Неверно установлен номер версии. Правильный формат "РР.ПП.ЗЗ.СС". #712
1428

1529

1630
#### Формы
@@ -25,6 +39,14 @@
2539
#### Запросы
2640

2741

42+
### Новые быстрые исправления (Quick-fix)
43+
44+
- Генрация синонима по имени для языка по умолчанию
45+
- Установка версии конфигурации в значение по умолчанию или очистка неправильного значения
46+
- Установка значения конфигурации "Использовать управляемые формы в обычном приложении"
47+
- Краткая информация заполняется по синониму
48+
- Подробная информация заполняется по синониму
49+
2850

2951
### Прочие изменения
3052

bundles/com.e1c.v8codestyle.md/META-INF/MANIFEST.MF

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
2828
com.e1c.g5.v8.dt.check.components;version="[2.0.0,3.0.0)",
2929
com.e1c.g5.v8.dt.check.context;version="[2.0.0,3.0.0)",
3030
com.e1c.g5.v8.dt.check.ext;version="[1.0.0,2.0.0)",
31+
com.e1c.g5.v8.dt.check.qfix;version="[2.0.0,3.0.0)",
32+
com.e1c.g5.v8.dt.check.qfix.components;version="[1.0.0,2.0.0)",
3133
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
3234
com.e1c.v8codestyle.check;version="[0.7.0,0.8.0)",
3335
com.google.common.base;version="[30.1.0,31.0.0)",

bundles/com.e1c.v8codestyle.md/plugin.xml

+66
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,58 @@
2626
category="com.e1c.v8codestyle.md"
2727
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationDataLock">
2828
</check>
29+
<check
30+
category="com.e1c.v8codestyle.md"
31+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationBriefInformationCheck">
32+
</check>
33+
<check
34+
category="com.e1c.v8codestyle.md"
35+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationCopyrightCheck">
36+
</check>
37+
<check
38+
category="com.e1c.v8codestyle.md"
39+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationDetailedInformationCheck">
40+
</check>
41+
<check
42+
category="com.e1c.v8codestyle.md"
43+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationInformationAddressCheck">
44+
</check>
45+
<check
46+
category="com.e1c.v8codestyle.md"
47+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationNameCheck">
48+
</check>
49+
<check
50+
category="com.e1c.v8codestyle.md"
51+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationSynonymCheck">
52+
</check>
53+
<check
54+
category="com.e1c.v8codestyle.md"
55+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationUpdateCatalogAddressCheck">
56+
</check>
57+
<check
58+
category="com.e1c.v8codestyle.md"
59+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationUseManagedFormsCheck">
60+
</check>
61+
<check
62+
category="com.e1c.v8codestyle.md"
63+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationVendorCheck">
64+
</check>
65+
<check
66+
category="com.e1c.v8codestyle.md"
67+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationVendorInformationAddressCheck">
68+
</check>
69+
<check
70+
category="com.e1c.v8codestyle.md"
71+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationVersionCheck">
72+
</check>
2973
<check
3074
category="com.e1c.v8codestyle.md"
3175
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.MdObjectNameLength">
3276
</check>
77+
<check
78+
category="com.e1c.v8codestyle.md"
79+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.MdObjectSynonymCheck">
80+
</check>
3381
<check
3482
category="com.e1c.v8codestyle.md"
3583
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameClient">
@@ -135,5 +183,23 @@
135183
class="com.e1c.v8codestyle.md.functionoption.check.FunctionalOptionPrivilegedGetModeCheck">
136184
</check>
137185
</extension>
186+
<extension
187+
point="com.e1c.g5.v8.dt.check.fixes">
188+
<fix
189+
class="com.e1c.v8codestyle.md.configuration.qfix.ConfigurationUseManagedFormsFix">
190+
</fix>
191+
<fix
192+
class="com.e1c.v8codestyle.md.configuration.qfix.ConfigurationVersionFix">
193+
</fix>
194+
<fix
195+
class="com.e1c.v8codestyle.md.configuration.qfix.ConfigurationBriefInformationFix">
196+
</fix>
197+
<fix
198+
class="com.e1c.v8codestyle.md.configuration.qfix.ConfigurationDetailedInformationFix">
199+
</fix>
200+
<fix
201+
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.qfix.MdObjectSynonymDefaultLanguageFix">
202+
</fix>
203+
</extension>
138204

139205
</plugin>
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
@@ -84,7 +84,7 @@ protected void configureCheck(CheckConfigurer builder)
8484
.severity(IssueSeverity.MINOR)
8585
.issueType(IssueType.UI_STYLE)
8686
.extension(new StandardCheckExtension(531, getCheckId(), CorePlugin.PLUGIN_ID))
87-
.extension(new SkipAdoptedInExtensionMdObjectExtension())
87+
.extension(SkipAdoptedInExtensionMdObjectExtension.instance())
8888
.extension(new TopObjectFilterExtension())
8989
.parameter(PARAM_ATTRIBUTES_LIST, String.class, DEFAULT_ATTRIBUTES_LIST,
9090
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
}

0 commit comments

Comments
 (0)