1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2025-01-06 00:33:23 +02:00

#1 перенос правил контрибутинга

This commit is contained in:
Dmitriy Marmyshev 2021-03-15 10:38:45 +03:00
parent 2082615fea
commit 5411d8a9d6
2 changed files with 47 additions and 6 deletions

View File

@ -193,7 +193,10 @@ Contributors:
Язык ведения проекта (issue, аудит и т.д.) - Русский, т.к. ориентация на русское сообщество программистов.
Поддержка разработчиков на других языка в будущем может быть решена дополнительно.
Все интерфейсные тексты должны быть написаны на английском яызке и локализированы - вынесены в отдельные ресурсные файлы `*.properties`.
Все интерфейсные тексты, которые видит пользователь, должны быть написаны на английском яызке и локализированы - вынесены в отдельные ресурсные файлы `*.properties`.
Кодировка файлов `*.properties` - UTF-8.
Все локализируемые ресурсные файлы должны быть переведены на дополнительный русский язык.
Например:
@ -201,8 +204,34 @@ Contributors:
- `messages.properties` - основной интерфейс, должен содержать английский интерфейс
- `messages_ru.properties` - дополнительный интерфейс на русском языке
В проекте используется система локализации **Eclipse NLS**:
Для большего удобства используйте помощник Eclipse Externalize Strings Wizard, который помогает переносить интерфейсные строки в ресурсные файлы.
- Необходимо создавать final-класс наследник `org.eclipse.osgi.util.NLS`
- В классе указывается консанта `BUNDLE_NAME` с полным квалификтором файла `messages` в котором хранятся локализованные сообщения.
- Создаются публичные константы, которые являются ключами в ресурсных файлах
```java
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;
static
{
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages()
{
}
}
```
Для большего удобства используйте помощник Eclipse Externalize Strings Wizard, который помогает переносить интерфейсные строки из кода в ресурсные файлы, с автоматическим созданием файла констант NLS.
Для редактирования ресурсных файлов следует использовать плагин из Маркет-плайса Eclipse: [ResourceBundle Editor](https://marketplace.eclipse.org/node/2628188) или аналогичны, позволяющий синхронно редактировать интерфейсы на нескольких языках, корректно учитывающий кодировку UTF-8.
### Code Style

View File

@ -64,7 +64,7 @@ method-never-used
#### Слова-паразиты
Следует избегать использования "слов-паразитов" которые не добавляют никакого смысла в код проверки, например слова: check, error, warning, артикли a, the, to, is, are и т.д. problem, valid
Следует избегать использования "слов-паразитов", которые не добавляют никакого смысла в код проверки, например слова: check, error, warning, артикли a, the, to, is, are и т.д. problem, valid
НЕПРАВИЛЬНО
@ -106,13 +106,15 @@ function-has-no-return-type
- Что проверяем, какую ошибку находит
- Существительное, в именительном падеже
- Наименование должно быть локализовано через NLS класс
### Детальное описание
1. Следует указывать описание при регистрации проверки в классе.
2. Детальное описание должно быть локализовано через NLS класс
2. Формируется описание в виде `check.descriptions/check-id.md` и `check.descriptions/ru/check-id.md` с детальным описанием
3. Ссылку на стандарт следует указывать в секции "См."
3. Ссылку на стандарт, по которому выполняется проверка, следует указывать в секции `## См.` (или `## See`) в файлах описаний `check-id.md`
4. Следует описывать все возможные варианты `НЕПРАВИЛЬНО` и `ПРАВИЛЬНО` которые находит проверка. Желательно использовать примеры из тестов.
### Тип (issueType)
@ -152,7 +154,7 @@ function-has-no-return-type
- Возможность внести исключения в правило поиска проблемных мест
- Нет смысла в параметрах если проверяется единственный объект и какое-либо исключение равно отключению проверки
- Используйте паттерны в параметрах для поиска исключений
- Любые значения (текстовые, числовые, с большой вариабельностью, кроме Булево) следует задавать через параметры
- Любые константные значения (текстовые, числовые, с большой вариабельностью, Булево), которое имеют отношение к логике проверки, следует задавать через параметры
Типовые примеры:
- Исключение по имени метаданного
@ -162,6 +164,15 @@ function-has-no-return-type
1. имена параметров должны быть понятны в контексте проверки
2. имена параметров пишутся в `CamelCase`, с маленькой буквы
3. Константа с именем параметра должна быть публичной
4. Заголовок параметра должен быть локализован через NLS класс
### Компоненты расширяющие функциональность
- Проверки, проверяющие 1 объект на наличие ошибок, в общем случае следует наследовать от `com._1c.g5.v8.dt.check.components.BasicCheck` или аналогичных для специфичных областей `com.e1c.g5.v8.dt.bsl.check.DocumentationCommentBasicDelegateCheck`, `com.e1c.g5.v8.dt.ql.check.QlBasicDelegateCheck`
- При наличии нескольих повторяющихся фрагментов кода c параметризацией и фильтрацией объектов - желательно создавать компонент `com._1c.g5.v8.dt.check.components.IBasicCheckExtension` для переиспользования.
- При необходимости использовать существующие компоненты `com._1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension`, `com._1c.g5.v8.dt.check.components.TopObjectFilterExtension`
## Логика проверки / код проверки
@ -174,7 +185,8 @@ function-has-no-return-type
1. В чем ошибка
2. Формат текста: существительное, именительный падеж
2. Указание значений параметров в сообщении
3. Указание значений параметров в сообщении
4. Сообщение должно быть локализовано через NLS класс
Примеры:
1. Переменная не была инициализирована