1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2025-02-20 07:48:17 +02:00

Merge branch 'master' of github.com:1C-Company/v8-code-style into

G5V8DT-22401
This commit is contained in:
Alexander Tretyakevich 2024-04-04 10:16:41 +07:00
commit a5cf40da58
172 changed files with 2038 additions and 469 deletions

View File

@ -2,6 +2,47 @@
[TOC text bullet hierarchy]
## 0.7.0
### Новые проверки
#### Метаданные
- Превышена максимальная длина числовых данных (31 знак). #82
#### Формы
#### Код модулей
- Проверка на уникальность имени поля в doc-comment-field-name #1392
- Проверка модификации ключей структуры вне функции-конструктора #1054
#### Запросы
### Прочие изменения
### Исправленные ошибки
- Ложное срабатывание проверки module-accessibility-at-client в модулях расширений #1207
## 0.6.0
Выпуск бета-версии для 1C:EDT 2023.2
### Исправленные ошибки
- Автосортировщик не сортирует дочерние подсистемы после получения изменений из базы
- Исправлены тексты сообщений в проверке common-module-name-global-client
## 0.5.0
Выпуск бета-версии для 1C:EDT 2023.1
@ -57,6 +98,8 @@
- Требование к программному продукту: Для переменных общих модулей проверялся префикс расширения и диагностировалась ошибка
- При анализе расположения устаревших методов учитывался только сценарий расположения устаревшей области в программном интерфейса, теперь учитывается еще и служебный программный интерфейс
- Исправлена ошибка в сообщении проверки method-optional-parameter-before-required #1351
- Некорректная работа: md-object-attribute-comment-not-exist #1334
## 0.4.0

View File

@ -39,6 +39,8 @@
| Версия | 1C:EDT | JDT для разработки | P2-репозиторий |
|--------|--------|--------------------|----------------|
| 0.7.0 | 2023.3 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.3/0.7.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.3/0.7.0/repo.zip) |
| 0.6.0 | 2023.2 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.2/0.6.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.2/0.6.0/repo.zip) |
| 0.5.0 | 2023.1 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.1/0.5.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2023.1/0.5.0/repo.zip) |
| 0.4.0 | 2022.2 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.2/0.4.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.2/0.4.0/repo.zip) |
| 0.3.0 | 2022.1 | 2022-03 | [p2-link](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.1/0.3.0/repo/), [p2-zip](https://edt.1c.ru/downloads/releases/plugins/v8-code-style/edt-2022.1/0.3.0/repo.zip) |

View File

@ -18,7 +18,7 @@
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bom</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>BOM</name>
@ -28,8 +28,8 @@
</prerequisites>
<properties>
<tycho.version>2.2.0</tycho.version>
<tycho.extras.version>2.2.0</tycho.extras.version>
<tycho.version>2.7.0</tycho.version>
<tycho.extras.version>2.7.0</tycho.extras.version>
<markdown-page-generator.version>2.3.1</markdown-page-generator.version>
<!-- Override this property in each project -->
<markdown.page.generator.html.file.path>${project.basedir}</markdown.page.generator.html.file.path>
@ -48,7 +48,7 @@
<maven.build.timestamp.format>'v'yyyyMMdd-HHmm</maven.build.timestamp.format>
<qualifier>${maven.build.timestamp}</qualifier>
<eclipse.p2.latest>http://download.eclipse.org/releases/2020-06/</eclipse.p2.latest>
<eclipse.p2.latest>http://download.eclipse.org/releases/2022-03/</eclipse.p2.latest>
<p2repo.archive.skip>false</p2repo.archive.skip>
<org.jacoco.version>0.8.6</org.jacoco.version>
@ -104,7 +104,7 @@
<artifact>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>default</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</artifact>
</target>
<environments>

View File

@ -12,9 +12,9 @@
# 1C-Soft LLC - initial API and implementation
#*******************************************************************************
current_version='0.4.0'
new_version='0.5.0'
next_version='0.6.0'
current_version='0.6.0'
new_version='0.7.0'
next_version='0.8.0'
find . -name 'pom.xml' -exec sed -i '' "s/${current_version}-SNAPSHOT/${new_version}-SNAPSHOT/g" {} +

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.autosort.ui;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.autosort.ui.UiPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui;bundle-version="[3.118.0,4.0.0)",
@ -23,5 +23,5 @@ Import-Package: com._1c.g5.v8.dt.common;version="[6.0.0,7.0.0)",
com._1c.g5.v8.dt.metadata.mdclass;version="[9.0.0,10.0.0)",
com._1c.g5.wiring;version="[2.2.0,3.0.0)",
com._1c.g5.wiring.binder;version="[1.1.0,2.0.0)",
com.e1c.v8codestyle.autosort;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.autosort;version="[0.7.0,0.8.0)",
com.google.common.base;version="[32.1.0,33.0.0)"

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.autosort.ui</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.autosort.ui.properties.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String AutoSortPropertyPage_All_subordinate_objects;
public static String AutoSortPropertyPage_All_top_metadata_objects;
public static String AutoSortPropertyPage_Attributes_of_object;

View File

@ -22,7 +22,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.internal.autosort.ui.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String MdSortPreferenceChangeListener_Job_name;
public static String MdSortPreferenceChangeListener_Sort_question;

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.autosort;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.autosort.AutoSortPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.13.0,4.0.0)",
@ -30,10 +30,10 @@ Import-Package: com._1c.g5.v8.activitytracking.core;version="[1.0.0,2.0.0)",
com._1c.g5.v8.dt.metadata.mdclass;version="[9.0.0,10.0.0)",
com.e1c.g5.v8.dt.cli.api;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.cli.api.components;version="[2.0.0,3.0.0)",
com.e1c.v8codestyle;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle;version="[0.7.0,0.8.0)",
com.google.common.base;version="[32.1.0,33.0.0)",
org.slf4j;version="[1.7.2,2.0.0)"
Export-Package: com.e1c.v8codestyle.autosort;version="0.5.0";
Export-Package: com.e1c.v8codestyle.autosort;version="0.7.0";
uses:="org.eclipse.emf.ecore,
org.eclipse.core.runtime,
org.eclipse.emf.common.util,

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.autosort</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.internal.autosort.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String AutoSortProjectOptionProvider_description;
public static String AutoSortProjectOptionProvider_presentation;
public static String SortJob_Sort_metadata_objects__0;

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.bsl.ui;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.bsl.ui.UiPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
@ -50,5 +50,5 @@ Import-Package: com._1c.g5.ides.ui.texteditor.xtext.embedded;version="[6.0.0,7.0
com.e1c.g5.v8.dt.check.qfix;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.qfix.components;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.bsl;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.bsl.strict;version="[0.5.0,0.6.0)"
com.e1c.v8codestyle.bsl;version="[0.7.0,0.8.0)",
com.e1c.v8codestyle.bsl.strict;version="[0.7.0,0.8.0)"

View File

@ -19,9 +19,9 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.bsl.ui</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -22,7 +22,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.bsl.ui.qfix.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String ConvertFunctionToProcedureFix_description;

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.internal.bsl.ui.handlers.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String AddStrictTypeAnnotationHandler_Get_prject_module_files;
public static String AddStrictTypeAnnotationHandler_Job_title;
public static String AddStrictTypeAnnotationHandler_Update_module_files;

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.internal.bsl.ui.preferences.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String ModuleStructurePreferencePage_Automatically_create_module_structure;
public static String ModuleStructurePreferencePage_Automatically_create_strict_types_module;
static

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.internal.bsl.ui.properties.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String ModuleStructurePropertyPage_Automatically_create_module_structure;
public static String ModuleStructurePropertyPage_Automatically_create_strict_types_module;
public static String ModuleStructurePropertyPage_Open_template;

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.internal.bsl.ui.views.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String BslDocCommentView_Description;
public static String BslDocCommentView_Field;
public static String BslDocCommentView_Link;

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.bsl;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.bsl.BslPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@ -54,7 +54,7 @@ Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
com.e1c.g5.v8.dt.check.qfix;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.qfix.components;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)"
Export-Package: com.e1c.v8codestyle.bsl;version="0.5.0",
com.e1c.v8codestyle.bsl.strict;version="0.5.0"
com.e1c.v8codestyle;version="[0.7.0,0.8.0)",
com.e1c.v8codestyle.check;version="[0.7.0,0.8.0)"
Export-Package: com.e1c.v8codestyle.bsl;version="0.7.0",
com.e1c.v8codestyle.bsl.strict;version="0.7.0"

View File

@ -2,7 +2,46 @@
## Неправильно
```bsl
// Возвращаемое значение:
// пустое значение
Функция Неправильно(Параметры) Экспорт
// пустая
КонецФункции
// Ссылка на функцию без указания типа возвращаемого значения
//
// Возвращаемое значение:
// См. Неправильно()
Функция Неправильно2(Параметры) Экспорт
// пустая
КонецФункции
// Возвращаемое значение:
// НеизвестныйТип - неизвестный возвращаемый тип
Функция Неправильно3(Параметры) Экспорт
// пустая
КонецФункции
```
## Правильно
## См.
```bsl
// Параметры:
// См. Правильно2()
Функция Правильно(Параметры) Экспорт
// пустая
КонецФункции
// Параметры:
// Структура - указан возвращаемый тип
Функция Правильно2(Параметры) Экспорт
// пустая
КонецФункции
```
## См.

View File

@ -2,7 +2,25 @@
## Неправильно
```bsl
// Параметры:
// Параметры - Структура1 - некорректый тип
Процедура Неправильно(Параметры) Export
// пустая
КонецПроцедуры
```
## Правильно
```bsl
// Параметры:
// Параметры - Структура - корректный тип
Процедура Правильно(Параметры) Экспорт
// пустая
КонецПроцедуры
```
## См.

View File

@ -0,0 +1,68 @@
# Модификация ключа структуры вне функции-конструктора
Если Структура создана функцией-конструктором, то изменение состава ключей структуры методами
`Структура.Вставить("Ключ", ...); Структура.Удалить("Ключ"); Структура.Очистить();`
может приводить к ошибкам из-за неопределенности состава данных.
## Неправильно
Неправильно удалять все ключи структуры, удалять ключ или заменять ключ внешней структуры.
```bsl
// @strict-types
Процедура Неправильно1() Экспорт
ТестоваяСтруктура = Конструктор();
ТестоваяСтруктура.Очистить();
ТестоваяСтруктура.Вставить("Ключ1", 10);
ТестоваяСтруктура.Удалить("Ключ2");
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * Ключ1 - Булево -
// * Ключ2 - Число -
Функция Конструктор() Экспорт
ТестоваяСтруктура = новый Структура("Ключ1, Ключ2", Истина, 10);
ТестоваяСтруктура.Вставить("Ключ2", 20);
Возврат ТестоваяСтруктура;
КонецФункции
```
## Правильно
Обращаться к существующему ключу необходимо напрямую и устанавливать новое значение.
Вместо удаления ключа необходимо устанавливать значение, которое представляет пустое или начальное значение.
```bsl
// @strict-types
Процедура Правильно1() Экспорт
ТестоваяСтруктура = Конструктор();
ТестоваяСтруктура.Ключ1 = false;
ТестоваяСтруктура.Ключ2 = -1;
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * Ключ1 - Булево -
// * Ключ2 - Число -
Функция Конструктор() Экспорт
ТестоваяСтруктура = новый Структура("Ключ1, Ключ2", Истина, 10);
ТестоваяСтруктура.Вставить("Ключ2", 20);
Возврат ТестоваяСтруктура;
КонецФункции
```
## См.

View File

@ -0,0 +1,69 @@
# Structure key modification outside constructor function
If Structure was created by constructor function then changing the composition of the structure keys using methods
`Structure.Insert("Key", ...); Structure.Delete("Key"); Structure.Clear();`
can lead to errors due to the uncertainty of data composition.
## Noncompliant Code Example
Should not clear all structure keys, delete key or replace key of external structure.
```bsl
// @strict-types
Procedure Incorrect1() Export
TestStucture = Constructor();
TestStucture.Clear();
TestStucture.Insert("Key1", 10);
TestStucture.Delete("Key2");
EndProcedure
// Returns:
// Structure:
// * Key1 - Boolean -
// * Key2 - Number -
Function Constructor() Export
TestStucture = new Structure("Key1, Key2", true, 10);
TestStucture.Insert("Key2", 20);
Return TestStucture;
EndFunction
```
## Compliant Solution
Access to existing key directly and set new value.
Instead of delete key should set a value that represents blank or initial value.
```bsl
// @strict-types
Procedure Correct1() Export
TestStucture = Constructor();
TestStucture.Key1 = false;
TestStucture.Key2 = -1;
EndProcedure
// Returns:
// Structure:
// * Key1 - Boolean -
// * Key2 - Number -
Function Constructor() Export
TestStucture = new Structure("Key1, Key2", true, 10);
TestStucture.Insert("Key2", 10);
Return TestStucture;
EndFunction
```
## See

View File

@ -132,6 +132,10 @@
category="com.e1c.v8codestyle.bsl.strict"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.TypedValueAddingToUntypedCollectionCheck">
</check>
<check
category="com.e1c.v8codestyle.bsl.strict"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.StructureKeyModificationCheck">
</check>
<check
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.EventHandlerBooleanParamCheck">

View File

@ -19,10 +19,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.bsl</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -164,7 +164,7 @@ public class AccessibilityAtClientInObjectModuleCheck
private boolean allowManagerEventAtClient(EObject object, Module module, ICheckParameters parameters)
{
if (object instanceof Method && module.getModuleType() == ModuleType.MANAGER_MODULE
&& ((Method)object).isEvent())
&& (((Method)object).isEvent() || !((Method)object).getPragmas().isEmpty()))
{
String parameterMethodNames = parameters.getString(PARAMETER_ALLOW_MANAGER_EVENTS_AT_CLIENT);
if (StringUtils.isEmpty(parameterMethodNames))
@ -175,8 +175,11 @@ public class AccessibilityAtClientInObjectModuleCheck
Method method = (Method)object;
Set<String> methodNames = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
methodNames.addAll(List.of(parameterMethodNames.split(",\\s*"))); //$NON-NLS-1$
return methodNames.contains(method.getName());
return methodNames.contains(method.getName()) || !method.getPragmas().isEmpty() && method.getPragmas()
.stream()
.map(p -> p.getValue().replace("\"", "")) //$NON-NLS-1$ //$NON-NLS-2$
.filter(StringUtils::isNotBlank)
.anyMatch(methodNames::contains);
}
return false;
}

View File

@ -240,7 +240,7 @@ public final class CodeAfterAsyncCallCheck
}
else
{
statements = getStatementsFromContainer(container);
//statements = getStatementsFromContainer(container);
}
return statements;
}

View File

@ -23,7 +23,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.bsl.check.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String AccessibilityAtClientInObjectModuleCheck_Declared_variable_accessible_AtClient;

View File

@ -13,12 +13,14 @@
package com.e1c.v8codestyle.bsl.comment.check;
import java.text.MessageFormat;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import com._1c.g5.v8.dt.bsl.documentation.comment.BslDocumentationComment;
import com._1c.g5.v8.dt.bsl.documentation.comment.IDescriptionPart;
import com._1c.g5.v8.dt.bsl.documentation.comment.TypeSection.FieldDefinition;
import com._1c.g5.v8.dt.bsl.documentation.comment.TypeSection.TypeDefinition;
import com._1c.g5.v8.dt.common.StringUtils;
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
@ -84,5 +86,35 @@ public class FieldDefinitionNameCheck
resultAceptor.addIssue(message, fieldDef.getLineNumber(), fieldDef.getNameOffset(),
fieldDef.getName().length());
}
else if (!isUnique(fieldDef))
{
String message = MessageFormat.format(Messages.FieldDefinitionNameCheck_Field_name__N__is_not_unique,
fieldDef.getName());
resultAceptor.addIssue(message, fieldDef.getLineNumber(), fieldDef.getNameOffset(),
fieldDef.getName().length());
}
}
private boolean isUnique(FieldDefinition fieldDef)
{
IDescriptionPart parent = fieldDef.getParent();
if (parent instanceof TypeDefinition)
{
List<FieldDefinition> fields = ((TypeDefinition)parent).getFieldDefinitionExtension();
String name = fieldDef.getName();
for (FieldDefinition field : fields)
{
if (field == fieldDef)
{
return true;
}
else if (name.equalsIgnoreCase(field.getName()))
{
return false;
}
}
}
return true;
}
}

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.bsl.comment.check.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String CollectionTypeDefinitionCheck_Collection_type_should_have_contain_item_type;
public static String CollectionTypeDefinitionCheck_Collection_types;
public static String CollectionTypeDefinitionCheck_description;
@ -37,6 +37,7 @@ final class Messages
public static String ExportMethodCommentDescriptionCheck_title;
public static String FieldDefinitionNameCheck_description;
public static String FieldDefinitionNameCheck_Field_name__N__is_incorrect_name;
public static String FieldDefinitionNameCheck_Field_name__N__is_not_unique;
public static String FieldDefinitionNameCheck_title;
public static String FieldDefinitionTypeCheck_description;
public static String FieldDefinitionTypeCheck_Field_M_has_no_type_definition;

View File

@ -40,6 +40,8 @@ ExportMethodCommentDescriptionCheck_title=Missing Description section in the com
FieldDefinitionNameCheck_Field_name__N__is_incorrect_name = Field name "{0}" is incorrect name
FieldDefinitionNameCheck_Field_name__N__is_not_unique = Field name "{0}" is not unique
FieldDefinitionNameCheck_description = Documentation comment field is correct name
FieldDefinitionNameCheck_title = Documentation comment field is correct name

View File

@ -40,6 +40,8 @@ ExportMethodCommentDescriptionCheck_title=В комментарии к эксп
FieldDefinitionNameCheck_Field_name__N__is_incorrect_name = Имя поля "{0}" является некорректным
FieldDefinitionNameCheck_Field_name__N__is_not_unique = Имя поля "{0}" не уникально
FieldDefinitionNameCheck_description = Поле документирующего комментария является корректным именем
FieldDefinitionNameCheck_title = Поле документирующего комментария является корректным именем

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.bsl.qfix.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String ConsecutiveEmptyLinesFix_Description;
public static String ConsecutiveEmptyLinesFix_Details;
public static String RemoveExportFix_Remove_export_keyword_des;

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.bsl.strict.check.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String AbstractDynamicFeatureAccessTypeCheck_Skip_source_object_types;
public static String DocCommentFieldTypeCheck_description;
public static String DocCommentFieldTypeCheck_Field__N__has_no_type_definition;
@ -58,6 +58,14 @@ final class Messages
public static String StructureCtorValueTypeCheck_Structure_key__N__K__has_no_default_value_initializer;
public static String StructureCtorValueTypeCheck_Structure_key__N__K__value_initialized_with_empty_types;
public static String StructureCtorValueTypeCheck_title;
public static String StructureKeyModificationCheck_Check_Clear_method;
public static String StructureKeyModificationCheck_Check_Delete_method;
public static String StructureKeyModificationCheck_Check_Insert_method;
public static String StructureKeyModificationCheck_description;
public static String StructureKeyModificationCheck_error_message_Clear;
public static String StructureKeyModificationCheck_error_message_Delete;
public static String StructureKeyModificationCheck_error_message_Insert;
public static String StructureKeyModificationCheck_title;
public static String TypedValueAddingToUntypedCollectionCheck_description;
public static String TypedValueAddingToUntypedCollectionCheck_title;
public static String VariableTypeCheck_description;

View File

@ -0,0 +1,281 @@
/*******************************************************************************
* 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
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.bsl.strict.check;
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.DYNAMIC_FEATURE_ACCESS;
import static com._1c.g5.v8.dt.bsl.model.BslPackage.Literals.FEATURE_ACCESS__NAME;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.naming.IQualifiedNameConverter;
import org.eclipse.xtext.nodemodel.ICompositeNode;
import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
import org.eclipse.xtext.util.Pair;
import com._1c.g5.v8.bm.core.IBmTransaction;
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
import com._1c.g5.v8.dt.bsl.common.IStaticExpressionValueComputer;
import com._1c.g5.v8.dt.bsl.common.IStringLiteralTextProvider;
import com._1c.g5.v8.dt.bsl.model.BslDerivedPropertySource;
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.Invocation;
import com._1c.g5.v8.dt.bsl.model.Method;
import com._1c.g5.v8.dt.bsl.model.util.BslUtil;
import com._1c.g5.v8.dt.common.StringUtils;
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
import com._1c.g5.v8.dt.mcore.DerivedProperty;
import com._1c.g5.v8.dt.mcore.Property;
import com._1c.g5.v8.dt.mcore.TypeItem;
import com._1c.g5.v8.dt.mcore.util.Environments;
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
import com.e1c.g5.dt.core.api.naming.INamingService;
import com.e1c.g5.v8.dt.check.CheckComplexity;
import com.e1c.g5.v8.dt.check.ICheckParameters;
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.google.inject.Inject;
/**
* The check of structure key modification using methods Clear(), Delete() and Insert()
* for structure created with external constructor function.
*
* @author Dmitriy Marmyshev
*/
public class StructureKeyModificationCheck
extends AbstractTypeCheck
{
private static final String CHECK_ID = "structure-key-modification"; //$NON-NLS-1$
private static final String PARAM_CHECK_INSERT = "checkInsert"; //$NON-NLS-1$
private static final String PARAM_CHECK_DELETE = "checkDelete"; //$NON-NLS-1$
private static final String PARAM_CHECK_CLEAR = "checkClear"; //$NON-NLS-1$
private static final String INSERT_RU = "Вставить"; //$NON-NLS-1$
private static final String INSERT = "Insert"; //$NON-NLS-1$
private static final String CLEAR_RU = "Очистить"; //$NON-NLS-1$
private static final String CLEAR = "Clear"; //$NON-NLS-1$
private static final String DELETE_RU = "Удалить"; //$NON-NLS-1$
private static final String DELETE = "Delete"; //$NON-NLS-1$
private static final String MODULE_URI_FRAGMENT = "/0"; //$NON-NLS-1$
private final IStaticExpressionValueComputer staticExpressionValueComputer;
@Inject
public StructureKeyModificationCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager,
IStaticExpressionValueComputer staticExpressionValueComputer)
{
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
this.staticExpressionValueComputer = staticExpressionValueComputer;
}
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.StructureKeyModificationCheck_title)
.description(Messages.StructureKeyModificationCheck_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MAJOR)
.issueType(IssueType.CODE_STYLE)
.extension(new ModuleTopObjectNameFilterExtension())
.extension(new StrictTypeAnnotationCheckExtension())
.module()
.checkedObjectType(DYNAMIC_FEATURE_ACCESS)
.parameter(PARAM_CHECK_INSERT, Boolean.class, Boolean.TRUE.toString(),
Messages.StructureKeyModificationCheck_Check_Insert_method)
.parameter(PARAM_CHECK_DELETE, Boolean.class, Boolean.TRUE.toString(),
Messages.StructureKeyModificationCheck_Check_Delete_method)
.parameter(PARAM_CHECK_CLEAR, Boolean.class, Boolean.TRUE.toString(),
Messages.StructureKeyModificationCheck_Check_Clear_method);
}
@Override
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
IBmTransaction bmTransaction, IProgressMonitor monitor)
{
DynamicFeatureAccess fa = (DynamicFeatureAccess)object;
String methodName = fa.getName();
if (StringUtils.isBlank(methodName))
{
return;
}
Invocation inv = BslUtil.getInvocation(fa);
if (inv == null)
{
return;
}
Expression source = fa.getSource();
boolean isInsert = isInsert(methodName);
if (parameters.getBoolean(PARAM_CHECK_INSERT) && isInsert
|| parameters.getBoolean(PARAM_CHECK_DELETE) && isDelete(methodName))
{
if (inv.getParams().isEmpty())
{
return;
}
Environments actualEnvs = getActualEnvironments(fa);
if (actualEnvs.isEmpty())
{
return;
}
List<TypeItem> sourceTypes = computeTypes(source, actualEnvs).stream()
.filter(t -> IEObjectTypeNames.STRUCTURE.equals(McoreUtil.getTypeName(t)))
.collect(Collectors.toList());
if (sourceTypes.isEmpty())
{
return;
}
IStringLiteralTextProvider structureKey =
staticExpressionValueComputer.getStringContent(inv.getParams().get(0));
if (structureKey != null && StringUtils.isNotBlank(structureKey.getText()))
{
String keyName = structureKey.getText();
if (isExternalStructureKey(sourceTypes, source, keyName, monitor))
{
String message = isInsert ? Messages.StructureKeyModificationCheck_error_message_Insert
: Messages.StructureKeyModificationCheck_error_message_Delete;
message = MessageFormat.format(message, keyName);
resultAcceptor.addIssue(message, FEATURE_ACCESS__NAME);
}
}
}
else if (parameters.getBoolean(PARAM_CHECK_CLEAR) && inv.getParams().isEmpty() && isClear(methodName))
{
Environments actualEnvs = getActualEnvironments(fa);
if (actualEnvs.isEmpty())
{
return;
}
List<TypeItem> sourceTypes = computeTypes(source, actualEnvs).stream()
.filter(t -> IEObjectTypeNames.STRUCTURE.equals(McoreUtil.getTypeName(t)))
.collect(Collectors.toList());
if (sourceTypes.isEmpty())
{
return;
}
Optional<DerivedProperty> firstProperty = getFirstExternalKey(sourceTypes, fa);
if (!monitor.isCanceled() && firstProperty.isPresent())
{
String message = Messages.StructureKeyModificationCheck_error_message_Clear;
resultAcceptor.addIssue(message, FEATURE_ACCESS__NAME);
}
}
}
private Optional<DerivedProperty> getFirstExternalKey(List<TypeItem> sourceTypes, Expression context)
{
return dynamicFeatureAccessComputer.getAllProperties(sourceTypes, context.eResource())
.stream()
.flatMap(e -> e.getFirst().stream())
.filter(e -> e instanceof DerivedProperty
&& ((DerivedProperty)e).getSource() instanceof BslDerivedPropertySource
&& isExternalStructureKey((DerivedProperty)e, context))
.map(DerivedProperty.class::cast)
.findAny();
}
private boolean isExternalStructureKey(Collection<TypeItem> structureTypes, Expression currentMethodObject,
String keyName, IProgressMonitor monitor)
{
Collection<Pair<Collection<Property>, TypeItem>> allProperties =
dynamicFeatureAccessComputer.getAllProperties(structureTypes, currentMethodObject.eResource());
for (Pair<Collection<Property>, TypeItem> pair : allProperties)
{
for (Property property : pair.getFirst())
{
if (monitor.isCanceled())
{
return false;
}
if (property instanceof DerivedProperty && keyName.equalsIgnoreCase(property.getName())
&& ((DerivedProperty)property).getSource() instanceof BslDerivedPropertySource)
{
return isExternalStructureKey((DerivedProperty)property, currentMethodObject);
}
}
}
return false;
}
private boolean isExternalStructureKey(DerivedProperty property, Expression currentMethodObject)
{
BslDerivedPropertySource source = (BslDerivedPropertySource)property.getSource();
URI uri = EcoreUtil.getURI(currentMethodObject).trimFragment().appendFragment(MODULE_URI_FRAGMENT);
if (source.getModuleUri() != null && !source.getModuleUri().equals(uri.toString()))
{
return true;
}
Method method = EcoreUtil2.getContainerOfType(currentMethodObject, Method.class);
String currentMethodName = method == null ? StringUtils.EMPTY : method.getName();
if (!currentMethodName.equalsIgnoreCase(source.getMethodName()))
{
return true;
}
else if (source.getLocalOffset() > 0 && method != null)
{
ICompositeNode node = NodeModelUtils.findActualNodeFor(method);
return source.getLocalOffset() < node.getOffset() - node.getTotalOffset();
}
return false;
}
private boolean isDelete(String methodName)
{
return DELETE_RU.equalsIgnoreCase(methodName) || DELETE.equalsIgnoreCase(methodName);
}
private boolean isInsert(String methodName)
{
return INSERT_RU.equalsIgnoreCase(methodName) || INSERT.equalsIgnoreCase(methodName);
}
private boolean isClear(String methodName)
{
return CLEAR_RU.equalsIgnoreCase(methodName) || CLEAR.equalsIgnoreCase(methodName);
}
}

View File

@ -84,6 +84,22 @@ StructureCtorValueTypeCheck_description = Checks Structure constructor string li
StructureCtorValueTypeCheck_title = Structure constructor value types
StructureKeyModificationCheck_Check_Clear_method = Check Clear() method
StructureKeyModificationCheck_Check_Delete_method = Check Delete() method
StructureKeyModificationCheck_Check_Insert_method = Check Insert() method
StructureKeyModificationCheck_description = Structure key modification outside constructor function
StructureKeyModificationCheck_error_message_Clear = Should not clear external structure keys
StructureKeyModificationCheck_error_message_Delete = Should not delete external structure key "{0}"
StructureKeyModificationCheck_error_message_Insert = Should not replace external structure key "{0}" with new value type
StructureKeyModificationCheck_title = Structure key modification outside constructor function
TypedValueAddingToUntypedCollectionCheck_description = Typed value is added to untyped collection
TypedValueAddingToUntypedCollectionCheck_title = Typed value is added to untyped collection

View File

@ -84,6 +84,22 @@ StructureCtorValueTypeCheck_description = Проверяет строковый
StructureCtorValueTypeCheck_title = Типизация значений в конструкторе структуры
StructureKeyModificationCheck_Check_Clear_method = Проверять метод Очистить()
StructureKeyModificationCheck_Check_Delete_method = Проверять метод Удалить()
StructureKeyModificationCheck_Check_Insert_method = Проверять метод Вставить()
StructureKeyModificationCheck_description = Модификация ключа структуры вне функции-конструктора
StructureKeyModificationCheck_error_message_Clear = Нельзя очищать ключи внешней структуры
StructureKeyModificationCheck_error_message_Delete = Нельзя удалять ключ "{0}" внешней структуры
StructureKeyModificationCheck_error_message_Insert = Нельзя заменять ключ "{0}" внешней структуры новым типом значения
StructureKeyModificationCheck_title = Модификация ключа структуры вне функции-конструктора
TypedValueAddingToUntypedCollectionCheck_description = Добавление типизированного значения в нетипизированную коллекцию
TypedValueAddingToUntypedCollectionCheck_title = Добавление типизированного значения в нетипизированную коллекцию

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.bsl.strict.fix.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String RemoveStrictTypesAnnotationFix_Description;
public static String RemoveStrictTypesAnnotationFix_Details;
static

View File

@ -27,6 +27,7 @@ import org.eclipse.xtext.scoping.IScopeProvider;
import com._1c.g5.v8.dt.bm.xtext.BmAwareResourceSetProvider;
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
import com._1c.g5.v8.dt.bsl.common.IStaticExpressionValueComputer;
import com._1c.g5.v8.dt.bsl.contextdef.IBslModuleContextDefService;
import com._1c.g5.v8.dt.bsl.documentation.comment.BslMultiLineCommentDocumentationProvider;
import com._1c.g5.v8.dt.bsl.model.resource.owner.IBslOwnerComputerService;
@ -100,5 +101,6 @@ class ExternalDependenciesModule
bind(IConfigurationProvider.class).toService();
bind(BslGrammarAccess.class).toProvider(() -> rsp.get(BslGrammarAccess.class));
bind(BmAwareResourceSetProvider.class).toProvider(() -> rsp.get(BmAwareResourceSetProvider.class));
bind(IStaticExpressionValueComputer.class).toProvider(() -> rsp.get(IStaticExpressionValueComputer.class));
}
}

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.internal.bsl.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String ModuleStructureProjectOptionProvider_Description;
public static String ModuleStructureProjectOptionProvider_presentation;
public static String StrictTypesProjectOptionProvider_description;

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.form;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.form.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
@ -43,5 +43,5 @@ Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
com.e1c.g5.v8.dt.check.qfix;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.qfix.components;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.check;version="[0.7.0,0.8.0)",
com.google.common.base;version="[32.1.0,33.0.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.form</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -22,7 +22,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.form.check.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String DataCompositionConditionalAppearanceUseCheck_description;
public static String DataCompositionConditionalAppearanceUseCheck_Form;
public static String DataCompositionConditionalAppearanceUseCheck_Form_attribute;

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.md.ui;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.md.ui.UiPlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui;bundle-version="[3.119.0,4.0.0)",
@ -27,5 +27,5 @@ Import-Package: com._1c.g5.v8.dt.common;version="[6.4.0,7.0.0)",
com._1c.g5.v8.dt.ui.wizards;version="[8.0.0,9.0.0)",
com._1c.g5.wiring;version="[2.2.0,3.0.0)",
com._1c.g5.wiring.binder;version="[1.1.0,2.0.0)",
com.e1c.v8codestyle.md;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.md;version="[0.7.0,0.8.0)",
com.google.common.base;version="[32.1.0,33.0.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.md.ui</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.md.ui.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String CommonModuleTypeDtNewWizardPage_Choose_valid_common_module_type_from_list;
public static String CommonModuleTypeDtNewWizardPage_Select_common_module_type;
public static String CommonModuleTypeDtNewWizardPage_Select_type;

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.md;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.md.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
@ -30,6 +30,6 @@ Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
com.e1c.g5.v8.dt.check.context;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.ext;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)",
com.e1c.v8codestyle.check;version="[0.7.0,0.8.0)",
com.google.common.base;version="[32.1.0,33.0.0)"
Export-Package: com.e1c.v8codestyle.md;version="0.5.0"
Export-Package: com.e1c.v8codestyle.md;version="0.7.0"

View File

@ -0,0 +1,19 @@
# Numeric data maximum length exceeded (31 symbols)
Application should equally work with all DBs, operation systems, web-browsers
and various modes of work which 1C:Enterprise supports.
## Noncompliant Code Example
Maximum length of numeric data - 38 symbols
## Compliant Solution
[8.3. IBM Db2](https://its.1c.ru/db/v83doc#bookmark:dev:TI000001288)
> 8.3. Server IBM DB2
> ● Maximum length of numeric data – 31 symbols (not 38).
## See

View File

@ -0,0 +1,29 @@
# Превышена максимальная длина числовых данных (31 знак)
Конфигурация должна быть одинаково рассчитана на работу со всеми
СУБД, операционными системами, веб-браузерами и различными режимами
работы, которые поддерживает платформа 1С:Предприятие.
## Неправильно
Максимальная длина числовых данных – 38 знак
## Правильно
Соблюдение стандартов "Приложение 8. Особенности работы с различными
СУБД"
[8.3. IBM Db2](https://its.1c.ru/db/v83doc#bookmark:dev:TI000001288)
> 8.3. Сервер IBM DB2
> ● Максимальная длина числовых данных – 31 знак (а не 38).
## См.
- [Общие требования к конфигурации](https://its.1c.ru/db/v8std#content:467:hdoc)

View File

@ -24,7 +24,7 @@
</category>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.ConfigurationDataLock">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.configuration.check.ConfigurationDataLock">
</check>
<check
category="com.e1c.v8codestyle.md"
@ -32,19 +32,19 @@
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameClient">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameClient">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameClientServer">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameClientServer">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameGlobal">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameGlobal">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleType">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleType">
</check>
<check
category="com.e1c.v8codestyle.md"
@ -52,7 +52,7 @@
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.MdScheduledJobDescriptionCheck">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.scheduledjob.check.MdScheduledJobDescriptionCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
@ -60,27 +60,27 @@
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.MdScheduledJobPeriodicityCheck">
class="com.e1c.v8codestyle.md.scheduledjob.check.MdScheduledJobPeriodicityCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.RegisterResourcePrecisionCheck">
class="com.e1c.v8codestyle.md.register.check.RegisterResourcePrecisionCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameServerCallCheck">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameServerCallCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameCachedCheck">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameCachedCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameClientCachedCheck">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameClientCachedCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameServerCallCachedCheck">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameServerCallCachedCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
@ -90,21 +90,25 @@
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.DbObjectAnyRefTypeCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.DbObjectMaxNumberLengthCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.UnsafePasswordStorageCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.SubsystemSynonymTooLongCheck">
class="com.e1c.v8codestyle.md.subsystem.check.SubsystemSynonymTooLongCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.check.CommonModuleNameGlobalClientCheck">
class="com.e1c.v8codestyle.internal.md.ExecutableExtensionFactory:com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNameGlobalClientCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.CommonModuleNamePrivilegedCheck">
class="com.e1c.v8codestyle.md.commonmodule.check.CommonModuleNamePrivilegedCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
@ -116,7 +120,7 @@
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.DocumentPostInPrivilegedModeCheck">
class="com.e1c.v8codestyle.md.document.check.DocumentPostInPrivilegedModeCheck">
</check>
<check
category="com.e1c.v8codestyle.md"
@ -128,7 +132,7 @@
</check>
<check
category="com.e1c.v8codestyle.md"
class="com.e1c.v8codestyle.md.check.FunctionalOptionPrivilegedGetModeCheck">
class="com.e1c.v8codestyle.md.functionoption.check.FunctionalOptionPrivilegedGetModeCheck">
</check>
</extension>

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.md</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.md.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String CommonModuleTypes_Server_module;
public static String CommonModuleTypes_Client_Cached_module;
public static String CommonModuleTypes_Client_global_module;

View File

@ -0,0 +1,167 @@
/*******************************************************************************
* 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
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.NUMBER_QUALIFIERS;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.NUMBER_QUALIFIERS__PRECISION;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.TYPE_DESCRIPTION;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.TYPE_DESCRIPTION__NUMBER_QUALIFIERS;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.TYPE_DESCRIPTION__TYPES;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.BASIC_DB_OBJECT;
import java.text.MessageFormat;
import java.util.Objects;
import java.util.function.Supplier;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import com._1c.g5.v8.dt.mcore.NumberQualifiers;
import com._1c.g5.v8.dt.mcore.TypeDescription;
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
import com._1c.g5.v8.dt.metadata.mdclass.BasicFeature;
import com._1c.g5.v8.dt.metadata.mdclass.DefinedType;
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
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;
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
/**
* The check that the DB attribute has number type and it is not more then 31.
*
*  @author Dmitriy Marmyshev
*
*/
public final class DbObjectMaxNumberLengthCheck
extends BasicCheck
{
private static final String CHECK_ID = "db-object-max-number-length"; //$NON-NLS-1$
public static final String MAX_LENGTH = "maxNumberLength"; //$NON-NLS-1$
public static final String MAX_LENGTH_DEFAULT = "31"; //$NON-NLS-1$
@Override
public String getCheckId()
{
return CHECK_ID;
}
@Override
protected void configureCheck(CheckConfigurer builder)
{
builder.title(Messages.DbObjectMaxNumberLengthCheck_title)
.description(Messages.DbObjectMaxNumberLengthCheck_description)
.complexity(CheckComplexity.NORMAL)
.severity(IssueSeverity.MAJOR)
.issueType(IssueType.PORTABILITY)
.extension(new StandardCheckExtension(467, getCheckId(), CorePlugin.PLUGIN_ID))
.extension(new SkipAdoptedInExtensionMdObjectExtension())
.parameter(MAX_LENGTH, Integer.class, MAX_LENGTH_DEFAULT, Messages.DbObjectMaxNumberLengthCheck_parameter);
builder.topObject(BASIC_DB_OBJECT)
.containment(TYPE_DESCRIPTION)
.features(TYPE_DESCRIPTION__TYPES, TYPE_DESCRIPTION__NUMBER_QUALIFIERS);
builder.topObject(BASIC_DB_OBJECT).containment(NUMBER_QUALIFIERS).features(NUMBER_QUALIFIERS__PRECISION);
}
@Override
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
if (object instanceof TypeDescription)
{
check((TypeDescription)object, resultAceptor, parameters, monitor);
}
else if (object instanceof NumberQualifiers)
{
check((NumberQualifiers)object, resultAceptor, parameters, monitor);
}
}
private void check(TypeDescription object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
if (!(object.eContainer() instanceof BasicFeature) || object.getTypes().size() != 1
|| !IEObjectTypeNames.DEFINED_TYPE.equals(McoreUtil.getTypeCategory(object.getTypes().get(0))))
{
return;
}
TypeDescription typeDescription = object;
EObject definedType = typeDescription.getTypes().get(0).eContainer();
while (definedType != null && !(definedType instanceof DefinedType))
{
definedType = definedType.eContainer();
}
if (definedType instanceof DefinedType)
{
typeDescription = ((DefinedType)definedType).getType();
}
checkAndAddIssue(typeDescription, () -> {
BasicFeature basicFeature = (BasicFeature)object.eContainer();
return basicFeature.getName();
}, resultAceptor, object, TYPE_DESCRIPTION__TYPES, parameters, monitor);
}
private void check(NumberQualifiers object, ResultAcceptor resultAceptor, ICheckParameters parameters,
IProgressMonitor monitor)
{
if (!(object.eContainer() instanceof TypeDescription)
|| !(object.eContainer().eContainer() instanceof BasicFeature))
{
return;
}
TypeDescription typeDescription = (TypeDescription)object.eContainer();
checkAndAddIssue(typeDescription, () -> {
BasicFeature basicFeature = (BasicFeature)typeDescription.eContainer();
return basicFeature.getName();
}, resultAceptor, object, NUMBER_QUALIFIERS__PRECISION, parameters, monitor);
}
private void checkAndAddIssue(TypeDescription typeDescription, Supplier<String> basicFeatureName,
ResultAcceptor resultAceptor, EObject object, EStructuralFeature feature, ICheckParameters parameters,
IProgressMonitor monitor)
{
if (monitor.isCanceled() || typeDescription.getNumberQualifiers() == null
|| typeDescription.getTypes()
.stream()
.map(McoreUtil::getTypeName)
.filter(Objects::nonNull)
.noneMatch(IEObjectTypeNames.NUMBER::equals))
{
return;
}
int maxPrecision = parameters.getInt(MAX_LENGTH);
int precision = typeDescription.getNumberQualifiers().getPrecision();
if (precision > maxPrecision)
{
resultAceptor.addIssue(MessageFormat.format(Messages.DbObjectMaxNumberLengthCheck_message,
basicFeatureName.get(), maxPrecision), object, feature);
}
}
}

View File

@ -21,6 +21,7 @@ import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CATALOG_
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT_ATTRIBUTE;
import java.text.MessageFormat;
import java.util.Set;
import java.util.TreeSet;
@ -57,19 +58,17 @@ public class MdObjectAttributeCommentCheck
private static final String CHECK_ID = "md-object-attribute-comment-incorrect-type"; //$NON-NLS-1$
public static final String PARAM_CHECK_DOCUMENTS = "checkDocuments"; //$NON-NLS-1$
public static final String PARAM_CHECK_CATALOGS = "checkCatalogs"; //$NON-NLS-1$
public static final String PARAM_ATTRIBUTES_LIST = "attributesList"; //$NON-NLS-1$
private static final String PARAM_CHECK_DOCUMENTS = "checkDocuments"; //$NON-NLS-1$
private static final String PARAM_CHECK_CATALOGS = "checkCatalogs"; //$NON-NLS-1$
private static final String PARAM_ATTRIBUTES_LIST = "attributesList"; //$NON-NLS-1$
public static final String DEFAULT_CHECK_DOCUMENTS = Boolean.toString(true);
public static final String DEFAULT_CHECK_CATALOGS = Boolean.toString(false);
private static final String DEFAULT_CHECK_DOCUMENTS = Boolean.toString(true);
private static final String DEFAULT_CHECK_CATALOGS = Boolean.toString(false);
private static final Set<String> COMMENT_ATTRIBUTES_LIST = Set.of("Комментарий", //$NON-NLS-1$
"Comment"); //$NON-NLS-1$
private static final String DELIMITER = ","; //$NON-NLS-1$
public static final String DEFAULT_ATTRIBUTES_LIST = String.join(DELIMITER, COMMENT_ATTRIBUTES_LIST);
private static final String DEFAULT_CHECK_MESSAGE = Messages.MdObjectAttributeCommentCheck_Default_check_message;
private static final String DEFAULT_ATTRIBUTES_LIST = String.join(DELIMITER, COMMENT_ATTRIBUTES_LIST);
public MdObjectAttributeCommentCheck()
{
@ -127,15 +126,14 @@ public class MdObjectAttributeCommentCheck
return;
}
if (!monitor.isCanceled() && checkDocuments && isDocumentAttribute(object))
boolean isDocument = checkDocuments && isDocumentAttribute(object);
boolean isCatalog = checkCatalogs && isCatalogAttribute(object);
if (!monitor.isCanceled() && (isDocument || isCatalog))
{
checkAttribute(attribute, resultAceptor);
}
if (!monitor.isCanceled() && checkCatalogs && isCatalogAttribute(object))
{
checkAttribute(attribute, resultAceptor);
}
}
private void checkAttribute(BasicFeature attribute, ResultAcceptor resultAceptor)
@ -149,7 +147,9 @@ public class MdObjectAttributeCommentCheck
TypeDescription typeDesc = attribute.getType();
if (McoreUtil.isCompoundType(typeDesc))
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
String msg = MessageFormat.format(Messages.MdObjectAttributeCommentCheck_message,
Messages.MdObjectAttributeCommentCheck_Is_compound_type);
resultAceptor.addIssue(msg, BASIC_FEATURE__TYPE);
return;
}
@ -170,13 +170,17 @@ public class MdObjectAttributeCommentCheck
StringQualifiers qualifiers = typeDesc.getStringQualifiers();
if (qualifiers == null)
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
String msg = MessageFormat.format(Messages.MdObjectAttributeCommentCheck_message,
Messages.MdObjectAttributeCommentCheck_Not_a_String);
resultAceptor.addIssue(msg, BASIC_FEATURE__TYPE);
return;
}
if (qualifiers.getLength() != 0)
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__TYPE);
String msg = MessageFormat.format(Messages.MdObjectAttributeCommentCheck_message,
Messages.MdObjectAttributeCommentCheck_String_is_not_unlimited);
resultAceptor.addIssue(msg, BASIC_FEATURE__TYPE);
}
}
@ -185,7 +189,9 @@ public class MdObjectAttributeCommentCheck
{
if (!attribute.isMultiLine())
{
resultAceptor.addIssue(DEFAULT_CHECK_MESSAGE, BASIC_FEATURE__MULTI_LINE);
String msg = MessageFormat.format(Messages.MdObjectAttributeCommentCheck_message,
Messages.MdObjectAttributeCommentCheck_Multiline_edit_is_not_enabled);
resultAceptor.addIssue(msg, BASIC_FEATURE__MULTI_LINE);
}
}

View File

@ -21,17 +21,19 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.md.check.messages"; //$NON-NLS-1$
public static String CommonModuleNameClient_description;
public static String CommonModuleNameClient_message;
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String DbObjectRefNonRefTypesCheck_Description;
public static String DbObjectRefNonRefTypesCheck_Ref_and_other;
public static String DbObjectRefNonRefTypesCheck_Title;
public static String MdObjectAttributeCommentCheck_Attribute_list;
public static String MdObjectAttributeCommentCheck_Check_catalogs_param;
public static String MdObjectAttributeCommentCheck_Check_documents_param;
public static String MdObjectAttributeCommentCheck_Default_check_message;
public static String MdObjectAttributeCommentCheck_Is_compound_type;
public static String MdObjectAttributeCommentCheck_Multiline_edit_is_not_enabled;
public static String MdObjectAttributeCommentCheck_Not_a_String;
public static String MdObjectAttributeCommentCheck_String_is_not_unlimited;
public static String MdObjectAttributeCommentCheck_description;
public static String MdObjectAttributeCommentCheck_message;
public static String MdObjectAttributeCommentCheck_title;
public static String MdObjectAttributeCommentNotExist_description;
public static String MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist;
@ -40,41 +42,16 @@ final class Messages
public static String MdObjectAttributeCommentNotExist_Param_Attribute_name_list;
public static String MdObjectAttributeCommentNotExist_title;
public static String MdObjectNameWithoutSuffix_Name_suffix_list_title;
public static String CommonModuleNameClient_title;
public static String CommonModuleNameClientServer_description;
public static String CommonModuleNameClientServer_message;
public static String CommonModuleNameClientServer_title;
public static String CommonModuleNamePrivilegedCheck_Description;
public static String CommonModuleNamePrivilegedCheck_Issue;
public static String CommonModuleNamePrivilegedCheck_Title;
public static String CommonModuleNameGlobal_Description;
public static String CommonModuleNameGlobal_Message;
public static String CommonModuleNameGlobal_Title;
public static String CommonModuleNameGlobalClientCheck_Description;
public static String CommonModuleNameGlobalClientCheck_Message;
public static String CommonModuleNameGlobalClientCheck_Title;
public static String CommonModuleType_description;
public static String CommonModuleType_message;
public static String CommonModuleType_title;
public static String ConfigurationDataLock_description;
public static String ConfigurationDataLock_message;
public static String ConfigurationDataLock_title;
public static String CommonModuleNameServerCallPostfixCheck_0;
public static String CommonModuleNameServerCallPostfixCheck_Common_module_name_description;
public static String CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title;
public static String DbObjectAnyRefCheck_AnyRef;
public static String DbObjectAnyRefCheck_Description;
public static String DbObjectAnyRefCheck_Title;
public static String DocumentPostInPrivilegedModeCheck_description;
public static String DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode;
public static String DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode;
public static String DocumentPostInPrivilegedModeCheck_title;
public static String DbObjectMaxNumberLengthCheck_description;
public static String DbObjectMaxNumberLengthCheck_message;
public static String DbObjectMaxNumberLengthCheck_parameter;
public static String DbObjectMaxNumberLengthCheck_title;
public static String ExtensionMdObjectNamePrefixCheck_Description;
public static String ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix;
public static String ExtensionMdObjectNamePrefixCheck_Title;
public static String FunctionalOptionPrivilegedGetModeCheck_description;
public static String FunctionalOptionPrivilegedGetModeCheck_message;
public static String FunctionalOptionPrivilegedGetModeCheck_title;
public static String MdObjectNameLength_description;
public static String MdObjectNameLength_Maximum_name_length_description;
public static String MdObjectNameLength_message;
@ -89,24 +66,9 @@ final class Messages
public static String MdOwnerAttributeSynonymEmpty_Description;
public static String MdOwnerAttributeSynonymEmpty_owner_ErrorMessage;
public static String MdOwnerAttributeSynonymEmpty_parent_ErrorMessage;
public static String MdScheduledJobDescriptionCheck_title;
public static String MdScheduledJobDescriptionCheck_description;
public static String MdScheduledJobDescriptionCheck_message;
public static String MdScheduledJobPeriodicityCheck_description;
public static String MdScheduledJobPeriodicityCheck_The_minimum_job_interval_is_less_then_minute;
public static String MdScheduledJobPeriodicityCheck_title;
public static String MdScheduledJobPeriodicityCheck_Minimum_job_interval_description;
public static String UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase;
public static String UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_description;
public static String UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_error;
public static String RegisterResourcePrecisionCheck_description;
public static String RegisterResourcePrecisionCheck_message;
public static String RegisterResourcePrecisionCheck_title;
public static String SubsystemSynonymTooLongCheck_description;
public static String SubsystemSynonymTooLongCheck_Exclude_languages_comma_separated;
public static String SubsystemSynonymTooLongCheck_Length_of_section_name_more_than_symbols_for_language;
public static String SubsystemSynonymTooLongCheck_Maximum_section_name_length;
public static String SubsystemSynonymTooLongCheck_title;
static
{
// initialize resource bundle

View File

@ -1,101 +1,55 @@
CommonModuleNameClientServer_description = Client-server common module should end with ClientServer suffix
CommonModuleNameClientServer_message = Client-server common module should end with "{0}" suffix
CommonModuleNameClientServer_title = Client-server common module should end with ClientServer suffix
CommonModuleNameClient_description = Client common module should end with Client suffix
CommonModuleNameClient_message = Client common module name should end with "{0}" suffix
CommonModuleNameClient_title = Client common module should end with Client suffix
CommonModuleNameGlobalClientCheck_Description = Global common module should end with Global suffix
CommonModuleNameGlobalClientCheck_Message = Global common module should not have "{0}" suffix
CommonModuleNameGlobalClientCheck_Title = Global common module should end with Global suffix
CommonModuleNameGlobal_Description = Global common module should end with Global suffix
CommonModuleNameGlobal_Message = Global common module should end with "{0}" suffix
CommonModuleNameGlobal_Title = Global common module should end with Global suffix
CommonModuleNamePrivilegedCheck_Description = Privileged common module should end with FullAccess suffix
CommonModuleNamePrivilegedCheck_Issue = Privileged common module should end with "{0}" suffix
CommonModuleNamePrivilegedCheck_Title = Privileged common module should end with FullAccess suffix
CommonModuleNameServerCallPostfixCheck_0 = Common module should end with {0}
CommonModuleNameServerCallPostfixCheck_Common_module_name_description = Common module should end with correct postfix
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title = Common module should end with correct postfix
CommonModuleType_description = Common module has incorrect type
CommonModuleType_message = Common module for type "{0}" has incorrect settings: {1}
CommonModuleType_title = Common module has incorrect type
ConfigurationDataLock_description = Application should use managed data lock mode
ConfigurationDataLock_message = Application should use managed data lock mode
ConfigurationDataLock_title = Configuration data lock mode
DbObjectAnyRefCheck_AnyRef = Do not use composite types AnyRef, CatalogRef, DocumentRef, and other for standard metadata objects stored in the infobase.
DbObjectAnyRefCheck_Description = Do not use composite types AnyRef, CatalogRef, DocumentRef, and other for standard metadata objects stored in the infobase.
DbObjectAnyRefCheck_Title = Restrictions on the use of any ref type attributes
DbObjectMaxNumberLengthCheck_description = Numeric DB field maximum length is 31
DbObjectMaxNumberLengthCheck_message = Numeric field "{0}" length is more than {1}
DbObjectMaxNumberLengthCheck_parameter = Numeric field maximum length
DbObjectMaxNumberLengthCheck_title = Numeric DB field maximum length is 31
DbObjectRefNonRefTypesCheck_Description = Composite type attributes used in join conditions, filters, and for ordering must contain only reference attribute types (CatalogRef. ..., DocumentRef. ..., and other). Do not include any other non-reference types in this type. For example: String, Number, Date, UUID, Boolean, and ValueStorage.
DbObjectRefNonRefTypesCheck_Ref_and_other = Composite type attributes used in join conditions, filters, and for ordering must contain only reference attribute types (CatalogRef. ..., DocumentRef. ..., and other). Do not include any other non-reference types in this type.
DbObjectRefNonRefTypesCheck_Title = Restrictions on the use of composite type attributes
DocumentPostInPrivilegedModeCheck_title = In document that allow posting don't set flag "Post/Unpost in privileged mode"
DocumentPostInPrivilegedModeCheck_description = In document that allow posting don't set flag "Post/Unpost in privileged mode"
DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode = In document that allow posting don't set flag "Post in privileged mode"
DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode = In document that allow posting don't set flag "Unpost in privileged mode"
ExtensionMdObjectNamePrefixCheck_Description = The object name of the extension object does not have a prefix corresponding to the prefix of the extension itself
ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix = The object "{0}" should have "{1}" prefix
ExtensionMdObjectNamePrefixCheck_Title = Extension object name does not have extension prefix
FunctionalOptionPrivilegedGetModeCheck_message = Functional option don't use privileged get mode
FunctionalOptionPrivilegedGetModeCheck_description = Functional option don't use privileged get mode
FunctionalOptionPrivilegedGetModeCheck_title = Functional option don't use privileged get mode
MdListObjectPresentationCheck_Neither_Object_presentation_nor_List_presentation_is_not_filled = Neither Object presentation nor List presentation is not filled
MdListObjectPresentationCheck_decription = Neither Object presentation nor List presentation is not filled
MdListObjectPresentationCheck_title = Neither Object presentation nor List presentation is not filled
MdObjectAttributeCommentCheck_Attribute_list=Attributes list
MdObjectAttributeCommentCheck_Attribute_list = Attributes list
MdObjectAttributeCommentCheck_Check_catalogs_param=Check Catalogs
MdObjectAttributeCommentCheck_Check_catalogs_param = Check Catalogs
MdObjectAttributeCommentCheck_Check_documents_param=Check Documents
MdObjectAttributeCommentCheck_Check_documents_param = Check Documents
MdObjectAttributeCommentCheck_Default_check_message=The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_Is_compound_type = attribute type is compound
MdObjectAttributeCommentCheck_description=The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_Multiline_edit_is_not_enabled = multiline edit is not enabled
MdObjectAttributeCommentCheck_title=The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_Not_a_String = type is not a String
MdObjectAttributeCommentCheck_String_is_not_unlimited = String must be of unlimited length
MdObjectAttributeCommentCheck_description = The attribute "Comment" has an invalid type
MdObjectAttributeCommentCheck_message = The attribute "Comment" has an invalid type: {0}
MdObjectAttributeCommentCheck_title = The attribute "Comment" has an invalid type
MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist = Md Object attribute "Comment" does not exist
@ -133,36 +87,6 @@ MdOwnerAttributeSynonymEmpty_owner_ErrorMessage = Synonym of the 'Owner' standar
MdOwnerAttributeSynonymEmpty_parent_ErrorMessage = Synonym of the 'Parent' standard attribute is not specified
MdScheduledJobDescriptionCheck_description = The description of the predefine sheduled job is set
MdScheduledJobDescriptionCheck_message = The description of the predefine sheduled job is set
MdScheduledJobDescriptionCheck_title = The description of the predefine sheduled job is set
MdScheduledJobPeriodicityCheck_Minimum_job_interval_description = Minimum job interval
MdScheduledJobPeriodicityCheck_The_minimum_job_interval_is_less_then_minute = The minimum job interval is less then {0}s
MdScheduledJobPeriodicityCheck_description = The minimum job interval is less then {0}s
MdScheduledJobPeriodicityCheck_title = The minimum job interval is less then {0}s
RegisterResourcePrecisionCheck_description = Accumulation or accounting register resource precision is more than 25
RegisterResourcePrecisionCheck_message = Accumulation or accounting register resource "{0}" precision is more than {1}
RegisterResourcePrecisionCheck_title = Accumulation or accounting register resource precision is more than 25
SubsystemSynonymTooLongCheck_Exclude_languages_comma_separated = Exclude languages (codes, comma-separated)
SubsystemSynonymTooLongCheck_Length_of_section_name_more_than_symbols_for_language = Length of section synonym "{0}" more than {1} symbols for language {2}
SubsystemSynonymTooLongCheck_Maximum_section_name_length = Maximum section name length
SubsystemSynonymTooLongCheck_description = Section name is more than 35 characters long
SubsystemSynonymTooLongCheck_title = Section name is more than 35 characters long
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase = Avoid storing passwords in the infobase
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_description = To minimize risks of unauthorized access to passwords, avoid storing passwords in the infobase.

View File

@ -1,85 +1,31 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
CommonModuleNameClientServer_description = Клиент-серверный общий модуль должен оканчиваться на суффикс КлиентСервер
CommonModuleNameClientServer_message = Клиент-серверный общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameClientServer_title = Клиент-серверный общий модуль должен оканчиваться на суффикс КлиентСервер
CommonModuleNameClient_description = Клиентский общий модуль должен оканчиваться на суффикс Клиент
CommonModuleNameClient_message = Клиентский общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameClient_title = Клиентский общий модуль должен оканчиваться на суффикс Клиент
CommonModuleNameGlobalClientCheck_Description = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobalClientCheck_Message = Глобальный общий модуль не должен содержать суффикс "{0}"
CommonModuleNameGlobalClientCheck_Title = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobal_Description = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobal_Message = Глобальный общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameGlobal_Title = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNamePrivilegedCheck_Description = Привилегированный модуль должен оканчиваться на суффикс ПолныеПрава
CommonModuleNamePrivilegedCheck_Issue = Привилегированный модуль должен оканчиваться на суффикс "{0}"
CommonModuleNamePrivilegedCheck_Title = Привилегированный модуль должен оканчиваться на суффикс ПолныеПрава
CommonModuleNameServerCallPostfixCheck_0 = Общий модуль должен именоваться с постфиксом {0}
CommonModuleNameServerCallPostfixCheck_Common_module_name_description = Общий модуль должен именоваться с постфиксом
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title = Общий модуль должен именоваться с постфиксом
CommonModuleType_description = Общий модуль имеет некорректный тип
CommonModuleType_message = Общий модуль для типа "{0}" имеет некорректные настройки: {1}
CommonModuleType_title = Общий модуль имеет некорректный тип
ConfigurationDataLock_description = Приложение должно использовать управляемый режим блокировки данных
ConfigurationDataLock_message = Приложение должно использовать управляемый режим блокировки данных
ConfigurationDataLock_title = Режим блокировки данных конфигурации
DbObjectAnyRefCheck_AnyRef = Для типизированных объектов метаданных, хранящихся в информационной базе, не следует использовать составные типы ЛюбаяСсылка, СправочникСсылка, ДокументСсылка и аналогичные.
DbObjectAnyRefCheck_Description = Для типизированных объектов метаданных, хранящихся в информационной базе, не следует использовать составные типы ЛюбаяСсылка, СправочникСсылка, ДокументСсылка и аналогичные. Состав типов того или иного типизированного объекта должен определяться явным образом.
DbObjectAnyRefCheck_Title = Использование составного типа, содержащего ЛюбаяСсылка и аналогичные.
DbObjectMaxNumberLengthCheck_description = Максимальная длина числовых данных 31 знак
DbObjectMaxNumberLengthCheck_message = Длинна числового поля "{0}" больше чем {1}
DbObjectMaxNumberLengthCheck_parameter = Максимальная длинна числового поля
DbObjectMaxNumberLengthCheck_title = Максимальная длина числовых данных 31 знак
DbObjectRefNonRefTypesCheck_Description = Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов, например: Строка, Число, Дата, УникальныйИдентификатор, Булево, а также ХранилищеЗначения.
DbObjectRefNonRefTypesCheck_Ref_and_other = Реквизиты составного типа, используемые в условиях соединений, отборах, а также для упорядочивания, должны содержать только ссылочные типы (СправочникСсылка.…, ДокументСсылка.… и пр.). В состав их типов не рекомендуется включать никаких других нессылочных типов.
DbObjectRefNonRefTypesCheck_Title = Использование составного типа, содержащего ссылочные и не ссылочный тип вместе.
DocumentPostInPrivilegedModeCheck_description = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении"
DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при отмене проведения"
DocumentPostInPrivilegedModeCheck_title = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
ExtensionMdObjectNamePrefixCheck_Description = Имя объекта в расширении не содержит префикс расширения
ExtensionMdObjectNamePrefixCheck_Object_0_should_have_1_prefix = Имя объекта "{0}" должно содержать префикс "{1}"
ExtensionMdObjectNamePrefixCheck_Title = Имя объекта в расширении должно содержать префикс расширения
FunctionalOptionPrivilegedGetModeCheck_message = В функциональной опции не установлен флаг "Привилегированный режим при получении"
FunctionalOptionPrivilegedGetModeCheck_description = В функциональной опции не установлен флаг "Привилегированный режим при получении"
FunctionalOptionPrivilegedGetModeCheck_title = В функциональной опции не установлен флаг "Привилегированный режим при получении"
MdListObjectPresentationCheck_Neither_Object_presentation_nor_List_presentation_is_not_filled = Не заполнено ни представление объекта, ни представление списка
MdListObjectPresentationCheck_decription = Не заполнено ни представление объекта, ни представление списка
@ -92,10 +38,18 @@ MdObjectAttributeCommentCheck_Check_catalogs_param = Проверять спра
MdObjectAttributeCommentCheck_Check_documents_param = Проверять документы
MdObjectAttributeCommentCheck_Default_check_message = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentCheck_Is_compound_type = реквизит имеет составной тип данных
MdObjectAttributeCommentCheck_Multiline_edit_is_not_enabled = не включен многострочный режим
MdObjectAttributeCommentCheck_Not_a_String = тип не Строка
MdObjectAttributeCommentCheck_String_is_not_unlimited = Строка должна быть неограниченной длины
MdObjectAttributeCommentCheck_description = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentCheck_message = Реквизит "Комментарий" имеет недопустимый тип: {0}
MdObjectAttributeCommentCheck_title = Реквизит "Комментарий" имеет недопустимый тип
MdObjectAttributeCommentNotExist_Md_Object_attribute_Comment_does_not_exist = Объект метаданных не имеет реквизит "Комментарий"
@ -134,36 +88,6 @@ MdOwnerAttributeSynonymEmpty_owner_ErrorMessage = Не задан синоним
MdOwnerAttributeSynonymEmpty_parent_ErrorMessage = Не задан синоним у стандартного реквизита 'Родитель'
MdScheduledJobDescriptionCheck_description = Задано наименование предопределенного регламентного задания
MdScheduledJobDescriptionCheck_message = Задано наименование предопределенного регламентного задания
MdScheduledJobDescriptionCheck_title = Задано наименование предопределенного регламентного задания
MdScheduledJobPeriodicityCheck_Minimum_job_interval_description = Минимальный интервал выполнения
MdScheduledJobPeriodicityCheck_The_minimum_job_interval_is_less_then_minute = Периодичность выполнения регламентного задания меньше {0}сек
MdScheduledJobPeriodicityCheck_description = Периодичность выполнения регламентного задания меньше {0}сек
MdScheduledJobPeriodicityCheck_title = Периодичность выполнения регламентного задания меньше {0}сек
RegisterResourcePrecisionCheck_description = Превышена максимальная длина ресурса регистра накопления или бухгалтерии (25 знаков)
RegisterResourcePrecisionCheck_message = Длина ресурса регистра "{0}" превышает {1}
RegisterResourcePrecisionCheck_title = Превышена максимальная длина ресурса регистра накопления или бухгалтерии (25 знаков)
SubsystemSynonymTooLongCheck_Exclude_languages_comma_separated = Исключить языки (коды, разделенных запятыми)
SubsystemSynonymTooLongCheck_Length_of_section_name_more_than_symbols_for_language = Длина синонима раздела "{0}" превышает {1} символов для языка {2}
SubsystemSynonymTooLongCheck_Maximum_section_name_length = Максимальная длина названия раздела верхнего уровня
SubsystemSynonymTooLongCheck_description = Длина названия раздела превышает 35 символов
SubsystemSynonymTooLongCheck_title = Длина названия раздела превышает 35 символов
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase = Не следует хранить пароли в информационной базе
UnsafePasswordStorageCheck_Avoid_storing_password_in_infobase_description = Для сведения к минимуму возможности перехвата пароля злоумышленниками не следует хранить пароли в информационной базе

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__RETURN_VALUES_REUSE;
@ -38,6 +38,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
import com.google.inject.Inject;
/**

View File

@ -11,7 +11,7 @@
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_MANAGED_APPLICATION;
@ -42,6 +42,8 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.MdObjectNameWithoutSuffix;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* Check client common module name has "Client" suffix

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__RETURN_VALUES_REUSE;
@ -38,6 +38,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
import com.google.inject.Inject;
/**

View File

@ -11,7 +11,7 @@
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_MANAGED_APPLICATION;
@ -42,6 +42,8 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.MdObjectNameWithoutSuffix;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* Check client-server common module name has "ClientServer" suffix

View File

@ -11,7 +11,7 @@
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_MANAGED_APPLICATION;
@ -42,6 +42,8 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.MdObjectNameWithoutSuffix;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* Check global common module name has "Global" suffix

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__GLOBAL;

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__PRIVILEGED;
@ -29,6 +29,8 @@ import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.check.MdObjectNameWithoutSuffix;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* Check privileged common module name has "FullAccess" suffix

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__RETURN_VALUES_REUSE;
@ -38,6 +38,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
import com.google.inject.Inject;
/**

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__SERVER_CALL;
@ -37,6 +37,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
import com.google.inject.Inject;
/**

View File

@ -11,7 +11,7 @@
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #15
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.commonmodule.check;
import static com._1c.g5.v8.dt.common.Functions.featureToLabel;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
@ -40,6 +40,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.CommonModuleTypes;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
import com.google.inject.Inject;
/**

View File

@ -0,0 +1,55 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.commonmodule.check;
import org.eclipse.osgi.util.NLS;
/**
* @author Dmitriy Marmyshev
*
*/
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String CommonModuleNameClient_description;
public static String CommonModuleNameClient_message;
public static String CommonModuleNameClient_title;
public static String CommonModuleNameClientServer_description;
public static String CommonModuleNameClientServer_message;
public static String CommonModuleNameClientServer_title;
public static String CommonModuleNamePrivilegedCheck_Description;
public static String CommonModuleNamePrivilegedCheck_Issue;
public static String CommonModuleNamePrivilegedCheck_Title;
public static String CommonModuleNameGlobal_Description;
public static String CommonModuleNameGlobal_Message;
public static String CommonModuleNameGlobal_Title;
public static String CommonModuleNameGlobalClientCheck_Description;
public static String CommonModuleNameGlobalClientCheck_Message;
public static String CommonModuleNameGlobalClientCheck_Title;
public static String CommonModuleType_description;
public static String CommonModuleType_message;
public static String CommonModuleType_title;
public static String CommonModuleNameServerCallPostfixCheck_0;
public static String CommonModuleNameServerCallPostfixCheck_Common_module_name_description;
public static String CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}

View File

@ -0,0 +1,42 @@
CommonModuleNameClientServer_description = Client-server common module should end with ClientServer suffix
CommonModuleNameClientServer_message = Client-server common module should end with "{0}" suffix
CommonModuleNameClientServer_title = Client-server common module should end with ClientServer suffix
CommonModuleNameClient_description = Client common module should end with Client suffix
CommonModuleNameClient_message = Client common module name should end with "{0}" suffix
CommonModuleNameClient_title = Client common module should end with Client suffix
CommonModuleNameGlobalClientCheck_Description = Client global common module should end with Client suffix
CommonModuleNameGlobalClientCheck_Message = Client global common module should not have "{0}" suffix
CommonModuleNameGlobalClientCheck_Title = Client global common module should end with Client suffix
CommonModuleNameGlobal_Description = Global common module should end with Global suffix
CommonModuleNameGlobal_Message = Global common module should end with "{0}" suffix
CommonModuleNameGlobal_Title = Global common module should end with Global suffix
CommonModuleNamePrivilegedCheck_Description = Privileged common module should end with FullAccess suffix
CommonModuleNamePrivilegedCheck_Issue = Privileged common module should end with "{0}" suffix
CommonModuleNamePrivilegedCheck_Title = Privileged common module should end with FullAccess suffix
CommonModuleNameServerCallPostfixCheck_0 = Common module should end with {0}
CommonModuleNameServerCallPostfixCheck_Common_module_name_description = Common module should end with correct postfix
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title = Common module should end with correct postfix
CommonModuleType_description = Common module has incorrect type
CommonModuleType_message = Common module for type "{0}" has incorrect settings: {1}
CommonModuleType_title = Common module has incorrect type

View File

@ -0,0 +1,43 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
CommonModuleNameClientServer_description = Клиент-серверный общий модуль должен оканчиваться на суффикс КлиентСервер
CommonModuleNameClientServer_message = Клиент-серверный общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameClientServer_title = Клиент-серверный общий модуль должен оканчиваться на суффикс КлиентСервер
CommonModuleNameClient_description = Клиентский общий модуль должен оканчиваться на суффикс Клиент
CommonModuleNameClient_message = Клиентский общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameClient_title = Клиентский общий модуль должен оканчиваться на суффикс Клиент
CommonModuleNameGlobalClientCheck_Description = Клиентский глобальный общий модуль должен оканчиваться на суффикс Клиент
CommonModuleNameGlobalClientCheck_Message = Клиентский глобальный общий модуль не должен содержать суффикс "{0}"
CommonModuleNameGlobalClientCheck_Title = Клиентский глобальный общий модуль должен оканчиваться на суффикс Клиент
CommonModuleNameGlobal_Description = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNameGlobal_Message = Глобальный общий модуль должен оканчиваться на суффикс "{0}"
CommonModuleNameGlobal_Title = Глобальный общий модуль должен оканчиваться на суффикс Глобальный
CommonModuleNamePrivilegedCheck_Description = Привилегированный модуль должен оканчиваться на суффикс ПолныеПрава
CommonModuleNamePrivilegedCheck_Issue = Привилегированный модуль должен оканчиваться на суффикс "{0}"
CommonModuleNamePrivilegedCheck_Title = Привилегированный модуль должен оканчиваться на суффикс ПолныеПрава
CommonModuleNameServerCallPostfixCheck_0 = Общий модуль должен именоваться с постфиксом {0}
CommonModuleNameServerCallPostfixCheck_Common_module_name_description = Общий модуль должен именоваться с постфиксом
CommonModuleNameServerCallPostfixCheck_Common_module_postfix_title = Общий модуль должен именоваться с постфиксом
CommonModuleType_description = Общий модуль имеет некорректный тип
CommonModuleType_message = Общий модуль для типа "{0}" имеет некорректные настройки: {1}
CommonModuleType_title = Общий модуль имеет некорректный тип

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.configuration.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CONFIGURATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.CONFIGURATION__DATA_LOCK_CONTROL_MODE;

View File

@ -0,0 +1,38 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.configuration.check;
import org.eclipse.osgi.util.NLS;
/**
* @author Dmitriy Marmyshev
*
*/
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String ConfigurationDataLock_description;
public static String ConfigurationDataLock_message;
public static String ConfigurationDataLock_title;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}

View File

@ -0,0 +1,6 @@
ConfigurationDataLock_description = Application should use managed data lock mode
ConfigurationDataLock_message = Application should use managed data lock mode
ConfigurationDataLock_title = Configuration data lock mode

View File

@ -0,0 +1,7 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
ConfigurationDataLock_description = Приложение должно использовать управляемый режим блокировки данных
ConfigurationDataLock_message = Приложение должно использовать управляемый режим блокировки данных
ConfigurationDataLock_title = Режим блокировки данных конфигурации

View File

@ -11,13 +11,13 @@
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.document.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__POSTING;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__POST_IN_PRIVILEGED_MODE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__UNPOST_IN_PRIVILEGED_MODE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__REGISTER_RECORDS;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.DOCUMENT__UNPOST_IN_PRIVILEGED_MODE;
import org.eclipse.core.runtime.IProgressMonitor;
@ -30,6 +30,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* The check that in the document that allow posting set flags "Post in privileged mode"

View File

@ -0,0 +1,38 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.document.check;
import org.eclipse.osgi.util.NLS;
/**
* @author Dmitriy Marmyshev
*
*/
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String DocumentPostInPrivilegedModeCheck_description;
public static String DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode;
public static String DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode;
public static String DocumentPostInPrivilegedModeCheck_title;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}

View File

@ -0,0 +1,8 @@
DocumentPostInPrivilegedModeCheck_title = In document that allow posting don't set flag "Post/Unpost in privileged mode"
DocumentPostInPrivilegedModeCheck_description = In document that allow posting don't set flag "Post/Unpost in privileged mode"
DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode = In document that allow posting don't set flag "Post in privileged mode"
DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode = In document that allow posting don't set flag "Unpost in privileged mode"

View File

@ -0,0 +1,9 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
DocumentPostInPrivilegedModeCheck_description = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"
DocumentPostInPrivilegedModeCheck_message_Post_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении"
DocumentPostInPrivilegedModeCheck_message_Unpost_in_privileged_mode = В документе, предполагающем проведение, не стоит флаг "Прив. режим при отмене проведения"
DocumentPostInPrivilegedModeCheck_title = В документе, предполагающем проведение, не стоит флаг "Прив. режим при проведении/отмене проведения"

View File

@ -11,11 +11,11 @@
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.functionoption.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.FUNCTIONAL_OPTION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.FUNCTIONAL_OPTION__PRIVILEGED_GET_MODE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.FUNCTIONAL_OPTION__LOCATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.FUNCTIONAL_OPTION__PRIVILEGED_GET_MODE;
import org.eclipse.core.runtime.IProgressMonitor;
@ -27,6 +27,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* Check functional option use privileged get mode.

View File

@ -0,0 +1,37 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.functionoption.check;
import org.eclipse.osgi.util.NLS;
/**
* @author Dmitriy Marmyshev
*
*/
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String FunctionalOptionPrivilegedGetModeCheck_description;
public static String FunctionalOptionPrivilegedGetModeCheck_message;
public static String FunctionalOptionPrivilegedGetModeCheck_title;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}

View File

@ -0,0 +1,6 @@
FunctionalOptionPrivilegedGetModeCheck_message = Functional option don't use privileged get mode
FunctionalOptionPrivilegedGetModeCheck_description = Functional option don't use privileged get mode
FunctionalOptionPrivilegedGetModeCheck_title = Functional option don't use privileged get mode

View File

@ -0,0 +1,7 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
FunctionalOptionPrivilegedGetModeCheck_message = В функциональной опции не установлен флаг "Привилегированный режим при получении"
FunctionalOptionPrivilegedGetModeCheck_description = В функциональной опции не установлен флаг "Привилегированный режим при получении"
FunctionalOptionPrivilegedGetModeCheck_title = В функциональной опции не установлен флаг "Привилегированный режим при получении"

View File

@ -0,0 +1,37 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.register.check;
import org.eclipse.osgi.util.NLS;
/**
* @author Dmitriy Marmyshev
*
*/
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String RegisterResourcePrecisionCheck_description;
public static String RegisterResourcePrecisionCheck_message;
public static String RegisterResourcePrecisionCheck_title;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}

View File

@ -10,7 +10,7 @@
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.register.check;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.TYPE_DESCRIPTION;
import static com._1c.g5.v8.dt.mcore.McorePackage.Literals.TYPE_DESCRIPTION__NUMBER_QUALIFIERS;

View File

@ -0,0 +1,6 @@
RegisterResourcePrecisionCheck_description = Accumulation or accounting register resource precision is more than 25
RegisterResourcePrecisionCheck_message = Accumulation or accounting register resource "{0}" precision is more than {1}
RegisterResourcePrecisionCheck_title = Accumulation or accounting register resource precision is more than 25

View File

@ -0,0 +1,7 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
RegisterResourcePrecisionCheck_description = Превышена максимальная длина ресурса регистра накопления или бухгалтерии (25 знаков)
RegisterResourcePrecisionCheck_message = Длина ресурса регистра "{0}" превышает {1}
RegisterResourcePrecisionCheck_title = Превышена максимальная длина ресурса регистра накопления или бухгалтерии (25 знаков)

View File

@ -11,7 +11,7 @@
* 1C-Soft LLC - initial API and implementation
* Sergey Kozynskiy - issue #431
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.scheduledjob.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.SCHEDULED_JOB;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.SCHEDULED_JOB__DESCRIPTION;
@ -28,6 +28,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**

View File

@ -12,7 +12,7 @@
* Manaev Konstantin - issue #38
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.scheduledjob.check;
import static com._1c.g5.v8.dt.schedule.model.SchedulePackage.Literals.DAILY_SCHEDULE;
import static com._1c.g5.v8.dt.schedule.model.SchedulePackage.Literals.DAILY_SCHEDULE__REPEAT_PAUSE;
@ -36,6 +36,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* Check mdo ScheduledJobs that a periodicity of execution a job is less than one minute

View File

@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.scheduledjob.check;
import org.eclipse.osgi.util.NLS;
/**
* @author Dmitriy Marmyshev
*
*/
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String MdScheduledJobDescriptionCheck_title;
public static String MdScheduledJobDescriptionCheck_description;
public static String MdScheduledJobDescriptionCheck_message;
public static String MdScheduledJobPeriodicityCheck_description;
public static String MdScheduledJobPeriodicityCheck_The_minimum_job_interval_is_less_then_minute;
public static String MdScheduledJobPeriodicityCheck_title;
public static String MdScheduledJobPeriodicityCheck_Minimum_job_interval_description;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}

View File

@ -0,0 +1,14 @@
MdScheduledJobDescriptionCheck_description = The description of the predefine scheduled job is set
MdScheduledJobDescriptionCheck_message = The description of the predefine scheduled job is set
MdScheduledJobDescriptionCheck_title = The description of the predefine scheduled job is set
MdScheduledJobPeriodicityCheck_Minimum_job_interval_description = Minimum job interval
MdScheduledJobPeriodicityCheck_The_minimum_job_interval_is_less_then_minute = The minimum job interval is less then {0}s
MdScheduledJobPeriodicityCheck_description = The minimum job interval is less then {0}s
MdScheduledJobPeriodicityCheck_title = The minimum job interval is less then {0}s

View File

@ -0,0 +1,15 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
MdScheduledJobDescriptionCheck_description = Задано наименование предопределенного регламентного задания
MdScheduledJobDescriptionCheck_message = Задано наименование предопределенного регламентного задания
MdScheduledJobDescriptionCheck_title = Задано наименование предопределенного регламентного задания
MdScheduledJobPeriodicityCheck_Minimum_job_interval_description = Минимальный интервал выполнения
MdScheduledJobPeriodicityCheck_The_minimum_job_interval_is_less_then_minute = Периодичность выполнения регламентного задания меньше {0}сек
MdScheduledJobPeriodicityCheck_description = Периодичность выполнения регламентного задания меньше {0}сек
MdScheduledJobPeriodicityCheck_title = Периодичность выполнения регламентного задания меньше {0}сек

View File

@ -0,0 +1,39 @@
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.md.subsystem.check;
import org.eclipse.osgi.util.NLS;
/**
* @author Dmitriy Marmyshev
*
*/
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String SubsystemSynonymTooLongCheck_description;
public static String SubsystemSynonymTooLongCheck_Exclude_languages_comma_separated;
public static String SubsystemSynonymTooLongCheck_Length_of_section_name_more_than_symbols_for_language;
public static String SubsystemSynonymTooLongCheck_Maximum_section_name_length;
public static String SubsystemSynonymTooLongCheck_title;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}

View File

@ -11,7 +11,7 @@
* 1C-Soft LLC - initial API and implementation
* Denis Maslennikov - issue #37
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
package com.e1c.v8codestyle.md.subsystem.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.MD_OBJECT__SYNONYM;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.SUBSYSTEM;
@ -35,6 +35,7 @@ import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
import com.e1c.g5.v8.dt.check.settings.IssueType;
import com.e1c.v8codestyle.check.StandardCheckExtension;
import com.e1c.v8codestyle.internal.md.CorePlugin;
import com.e1c.v8codestyle.md.check.SkipAdoptedInExtensionMdObjectExtension;
/**
* Check top subsystem synonym length that should be less then 35 by default or value

View File

@ -0,0 +1,10 @@
SubsystemSynonymTooLongCheck_Exclude_languages_comma_separated = Exclude languages (codes, comma-separated)
SubsystemSynonymTooLongCheck_Length_of_section_name_more_than_symbols_for_language = Length of section synonym "{0}" more than {1} symbols for language {2}
SubsystemSynonymTooLongCheck_Maximum_section_name_length = Maximum section name length
SubsystemSynonymTooLongCheck_description = Section name is more than 35 characters long
SubsystemSynonymTooLongCheck_title = Section name is more than 35 characters long

View File

@ -0,0 +1,11 @@
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
SubsystemSynonymTooLongCheck_Exclude_languages_comma_separated = Исключить языки (коды, разделенных запятыми)
SubsystemSynonymTooLongCheck_Length_of_section_name_more_than_symbols_for_language = Длина синонима раздела "{0}" превышает {1} символов для языка {2}
SubsystemSynonymTooLongCheck_Maximum_section_name_length = Максимальная длина названия раздела верхнего уровня
SubsystemSynonymTooLongCheck_description = Длина названия раздела превышает 35 символов
SubsystemSynonymTooLongCheck_title = Длина названия раздела превышает 35 символов

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.ql;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.ql.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
@ -28,4 +28,4 @@ Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
com.e1c.g5.v8.dt.check.components;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.settings;version="1.0.0",
com.e1c.g5.v8.dt.ql.check;version="[1.0.0,2.0.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)"
com.e1c.v8codestyle.check;version="[0.7.0,0.8.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.ql</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

View File

@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
final class Messages
extends NLS
{
private static final String BUNDLE_NAME = "com.e1c.v8codestyle.ql.check.messages"; //$NON-NLS-1$
private static final String BUNDLE_NAME = Messages.class.getPackageName() + ".messages"; //$NON-NLS-1$
public static String CamelCaseStringLiteral_description;
public static String CamelCaseStringLiteral_Regular_expression_to_skip_literal_content;
public static String CamelCaseStringLiteral_String_literal_contains_non_CamelCase_symbols__0;

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.e1c.v8codestyle.right;singleton:=true
Bundle-Version: 0.5.0.qualifier
Bundle-Version: 0.7.0.qualifier
Bundle-Activator: com.e1c.v8codestyle.internal.right.CorePlugin
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
@ -35,4 +35,4 @@ Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
com.e1c.g5.v8.dt.check.context;version="[2.0.0,3.0.0)",
com.e1c.g5.v8.dt.check.ext;version="[1.0.0,2.0.0)",
com.e1c.g5.v8.dt.check.settings;version="[3.0.0,4.0.0)",
com.e1c.v8codestyle.check;version="[0.5.0,0.6.0)"
com.e1c.v8codestyle.check;version="[0.7.0,0.8.0)"

View File

@ -18,10 +18,10 @@
<parent>
<groupId>com.e1c.v8codestyle</groupId>
<artifactId>bundles</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
</parent>
<artifactId>com.e1c.v8codestyle.right</artifactId>
<version>0.5.0-SNAPSHOT</version>
<version>0.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>

Some files were not shown because too many files have changed in this diff Show More