mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2024-12-04 11:39:52 +02:00
261 lines
24 KiB
Markdown
261 lines
24 KiB
Markdown
# 1С:Стандарты разработки V8 - CHANGELOG - ИСТОРИЯ ИЗМЕНЕНИЙ
|
|
|
|
[TOC text bullet hierarchy]
|
|
|
|
## 0.3.0
|
|
|
|
- Выпуск бета-версии для 1C:EDT 2022.1
|
|
|
|
### Новые фичи
|
|
|
|
|
|
|
|
### Новые проверки
|
|
|
|
|
|
|
|
#### Метаданные
|
|
|
|
- Длина синонима раздела верхнего уровня, отображаемого в интерфейсе, не должна превышать 35 символов
|
|
- Реквизиты составного типа, содержащие ссылочные типы и нессылочные типы вместе
|
|
- Реквизиты составного типа, содержащие типы `ЛюбаяСсылка`, `СправочникСсылка`, `ДокументСсылка` и аналогичные
|
|
- Небезопасное хранение паролей в информационной базе
|
|
|
|
#### Формы
|
|
|
|
- У реквизита "Ссылка" динамического списка выключен признак "Использовать всегда"
|
|
- У поля "Ссылка" таблицы динамического списка не отключена пользовательская видимость
|
|
- У каждого события должна быть назначена своя процедура-обработчик
|
|
- Проверка заполнения заголовка поля динамического списка
|
|
- Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
|
|
|
|
#### Код модулей
|
|
|
|
- 3 проверки на избыточное обращение внутри модуля через его имя или псевдоним ЭтотОбъект (к методу, свойству или реквизиту)
|
|
- Проверка использования устаревшего "ЭтаФорма" в модуле формы
|
|
- Избыточное ключевое слово Экспорт
|
|
- Проверка нарушения схемы работы с транзакциями связанной с фиксацией транзакции:
|
|
1. Вызов "ЗафиксироватьТранзакцию()" находится вне конструкции "Попытка... Исключение"
|
|
2. Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ЗафиксироватьТранзакцию()"
|
|
3. Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()"
|
|
4. Mежду "ЗафиксироватьТранзакцию()" и "Исключение" есть исполняемый код, который может вызвать исключение
|
|
- Проверка нарушения схемы работы с транзакциями связанной с отменой транзакции:
|
|
1. Вызов "ОтменитьТранзакцию()" находится вне конструкции "Попытка... Исключение"
|
|
2. Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ОтменитьТранзакцию()"
|
|
3. Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ЗафиксироватьТранзакцию()"
|
|
4. Mежду "Исключение" и "ОтменитьТранзакцию()" есть исполняемый код, который может вызвать исключение
|
|
- Проверка нарушения схемы работы с транзакциями связанной с началом транзакции:
|
|
1. Mежду "НачатьТранзакцию()" и "Попытка" есть исполняемый код, который может вызвать исключение
|
|
2. Не найден оператор "Попытка" после вызова "НачатьТранзакцию()"
|
|
- Отсутствует удаление временного файла после использования.
|
|
- Структура модуля. Проверка областей событий формы.
|
|
- Структура модуля. Добавлена проверка области событий.
|
|
- Отсутствует включение безопасного режима перед вызовом метода "Выполнить" или "Вычислить"
|
|
- Структура модуля. Добавлена проверка метода вне области.
|
|
- Структура модуля. Проверка что код инициализации расположен в области инициализации.
|
|
- Структура модуля. Область объявления переменных.
|
|
|
|
|
|
|
|
#### Запросы
|
|
|
|
- В качестве правого операнда операции сравнения "ПОДОБНО" указано поле таблицы
|
|
- В запросе в бинарной операции используются константные значения
|
|
|
|
#### Права ролей
|
|
|
|
- Установлено право "Удаление"
|
|
|
|
### Новые быстрые исправления (Quick-fix)
|
|
|
|
- 3 исправления исправления для удаления избыточного обращения внутри модуля к самому себе
|
|
- Замена в модуле формы устаревшего свойства "ЭтаФорма" на "ЭтотОбъект"
|
|
- Конвертация функции в процедуру
|
|
- Генерация заголовка элемента формы динамического списка
|
|
- Генерация заголовка поля динамического списка (8.3.19 и выше)
|
|
|
|
### Исправленные ошибки
|
|
|
|
- Неправильно валидируется пустой метод с комментарием #1007
|
|
- Понижение критичности для ошибок с кодами "doc-comment-use-minus", "form-module-missing-pragma" #1014
|
|
- Ошибка проверки md-standard-attribute-synonym-empty на проекте расширения #1021
|
|
- NPE при проверке в FunctionCtorReturnSectionCheck #1029
|
|
- NullPointerException, если проект EDT - расширение без указания основного языка. #1033
|
|
- Исключить BaseForm из проверок для форм #1037
|
|
- Ложное срабатывание проверки: common-module-type (признак привилегированный) #1031
|
|
- Ложное срабатывание проверки: invocation-parameter-type-intersect для Списка значений #997
|
|
- Ложное срабатывание проверки: invocation-parameter-type-intersect - для методов с несколькими вариантами вызова #992 #1039 #1056
|
|
- Ложное срабатывание проверки: doc-comment-ref-link Учет точки в конце ссылки на метод #993
|
|
- Ложное срабатывание проверки: statement-type-change для типов общего модуля #994
|
|
- Некорректное сообщение об ошибке в строгих типах. Не существует типа "Таблица" #1055
|
|
- Ложное сообщение об ошибке о неиспользовании составных типов для стандартных объектов метаданных #1069
|
|
- Ложное срабатывание проверки для динамических списков с произвольным запросом: У реквизита "Ссылка" динамического списка выключен признак "Использовать всегда" #1071
|
|
- Проверка: right-... не находит ошибку для роли с включением по умолчанию #815
|
|
- Отключение проверок для заимствованных объектов в расширении #1076
|
|
- Проверка: form-self-reference не находит ошибку #1086
|
|
- Ложное срабатывание проверки: module-structure-event-regions для обработчиков событий расположенных в общем модуле #1102
|
|
- Автосортировка падает при переводе кода #1106
|
|
|
|
## 0.2.0
|
|
|
|
- Выпуск бета-версии для 1C:EDT 2021.3
|
|
- Автоматические индексы описаний проверок в справке `Help -> Help contents -> 1C:Code style V8`
|
|
|
|
### Новые фичи
|
|
|
|
- Функциональные опции, добавляемые 1C:Code Style, собраны в одном месте для удобного включения/выключения - в помощнике создания нового проекта или в свойствах проекта.
|
|
- В автосортировке метаданных добавлен учет системы запрета редактирования объектов (правила поддержки)
|
|
- Контекстное включение строгой типизации в модулях: по проекту, по списку объектов 1С или по списку файлов/каталогов, из контекстного меню в редакторе модуля
|
|
|
|
### Новые проверки
|
|
|
|
#### Метаданные
|
|
|
|
- Периодичность выполнения регламентного задания меньше одной минуты
|
|
- Общий модуль, для которого предусмотрен вызов сервера, должен именоваться с постфиксом "ВызовСервера"
|
|
- Общий модуль с повторно используемыми значениями должен именоваться с постфиксом "ПовтИсп"
|
|
- Клиентский общий модуль с повторно используемыми значениями должен именоваться с постфиксом "КлиентПовтИсп"
|
|
- Общий модуль ВызовСервера с повторно используемыми значениями должен именоваться с постфиксом "ВызовСервераПовтИсп"
|
|
|
|
|
|
#### Код модулей
|
|
|
|
- Использован метод "РольДоступна()"
|
|
- Программный вызов обработчика события формы
|
|
- Изменение категории проверки use-non-recommended-method на "стандарты разработки"
|
|
- Использование конструкции "Новый Цвет"
|
|
- Перенесены проверки документирующего комментария:
|
|
1. Тип коллекций в документирующем комментарии содержит тип элемента коллекции
|
|
2. Поле документирующего комментария использует объявление сложного типа вместо ссылки на тип
|
|
3. Многострочное описание документирующего комментария оканчивается на точку
|
|
4. Серкция возвращаемого значения документирующего комментария для экспортной функции
|
|
5. Многострочное описание документирующего комментария содержит определение поля
|
|
6. Поле документирующего комментария является корректным именем
|
|
7. Поле документирующего комментария не имеет определения типа
|
|
8. Многострочное описание документирующего комментария содержит определение параметра
|
|
9. В секции параметров документирующего комментария пропущено определение параметра
|
|
10. Документирующий комментарий содежрит секцию возвращаемого значения для процедуры
|
|
11. Ссылка документирующего комментария на существующий объект
|
|
12. Секция возвращаемого значения документирующего комментария содержит корректные типы
|
|
13. Определение типа документирующего комментария
|
|
14. Активирована ранее отключенная проверка: Секция возвращаемого значения функции-конструктора данных
|
|
- Исправлен идентификатор проверки тип в строгой типизации: `doc-comment-field-type` -> `doc-comment-field-type-strict`
|
|
- Ограничения на использование экспортных процедур и функций в модулях команд и форм
|
|
- Вызов "Заблокировать()" находится вне попытки
|
|
- Для проверок dynamic-access-method-not-found и property-return-type добавлена возможность исключения по типам (COM-Объекты)
|
|
- Проверка типов invocation-parameter-type-intersect проверяет типы элементов коллекций: Массив, Соотвествие, СписокЗначений
|
|
|
|
### Новые быстрые исправления (Quick-fix)
|
|
|
|
- Удаление аннотации строгой типизации из модуля
|
|
- Открытие панели документирующего комментария
|
|
- Удаление ключевого слова Экспорт для процедур или функций в модуле команды и в модуле формы
|
|
|
|
### Исправленные ошибки
|
|
|
|
- Падение NPE в проверке ql-using-for-update, корректный учет зависимых проектов (обработки, расширения)
|
|
- Клиентский глобальный модуль: ошибочное предупреждение о некорректном типе
|
|
- Отключено создание модуля менеджера при создании перечисления
|
|
- Для проверки md-standard-attribute-synonym-empty исправлена регистрация и улучшена точность позиции ошибки
|
|
- Исправлен расчета типов возвращаемых значений функций с вызовом сервера
|
|
- Испрвление проверки типа локальной переменной в variable-value-type
|
|
- Проверка типов invocation-parameter-type-intersect при вызове метода, если существуют документирующие комментарии использует только декларированные типы
|
|
|
|
## 0.1.0
|
|
|
|
Выпуск бета-версии для 1C:EDT 2021.2
|
|
|
|
### Новые фичи
|
|
|
|
- Автосортировка метаданных, сортировка объектов верхнего уровня по умолчанию, для подчиненных настраивается
|
|
- Выбор подходящего тип общего модуля из списка при создании нового
|
|
- Панель "Bsl Документирующий комментарий"
|
|
- Автоматическое создание структуры модуля
|
|
- Автоматическое включение строгой типизации модулей
|
|
|
|
### Новые проверки
|
|
|
|
#### Метаданные
|
|
|
|
- Длина имени объекта метаданного должна быть меньше чем 80
|
|
- Приложение должно использовать управляемый режим блокировки данных
|
|
- Общий модуль имеет некорректный тип
|
|
- Глобальный общий модуль должен оканчиваться на суффикс Глобальный
|
|
- Клиент-серверный общий модуль должен оканчиваться на суффикс КлиентСервер
|
|
- Клиентский общий модуль должен оканчиваться на суффикс Клиент
|
|
- Не заполнено ни представление объекта, ни представление списка
|
|
- У предопределенного регламентного задания не должно быть заполнено наименование
|
|
- У стандартного свойства 'Владелец' или 'Родитель' должен быть заполнен синоним
|
|
|
|
#### Формы
|
|
|
|
- В полях форм со списками выбора следует всегда устанавливать свойство **РежимВыбораИзСписка** в значение Истина.
|
|
- Путь к данным объекта формы ссылается на существующий объект в каждом сегменте пути
|
|
|
|
#### Код модулей
|
|
|
|
- Проверка конструктора структуры содержащего больше 3х ключей
|
|
- Выполнение запроса в цикле с учетом локальных вызовов в модуле
|
|
- Проверка ОбменДанными.Загрузка в обработчике события
|
|
- Система строгой типизации кода:
|
|
- Переменная имеет тип значения
|
|
- Параметр метода имеет тип
|
|
- Функция возвращает типизированное значение
|
|
- Утверждение меняет тип
|
|
- Типизация значений в конструкторе структуры
|
|
- Вызываемый тип пересекается с типом параметра
|
|
- Секция возвращаемого значения функции-конструктора данных
|
|
- Свойство объекта имеет тип возвращаемого значения
|
|
- Метод в объекте не найден
|
|
- Поле документирующего комментария имеет описание типа
|
|
- Конструкция "Попытка...Исключение...КонецПопытки" не содержит кода в исключении
|
|
- Аннотация для метода написана канонически
|
|
- Используется аннотация &ИзменениеИКонтроль вместо &Вместо
|
|
- НСтр формат строкового литерала
|
|
- Использование булевного параметра обработчика события
|
|
- Метод содержит слишком много параметров
|
|
- Использование только дефис-минуса в документирующем комментарии
|
|
- Использование не рекомендуемых методов:
|
|
- ТекущаяДата
|
|
- Сообщить
|
|
- Область пустая
|
|
- Стандартная область структуры модуля верхнеуровневая
|
|
- Использование директив компиляции модуля формы
|
|
- Всегда использовать директивы компиляции в модуле формы
|
|
- Описание оповещения на серверную процедуру
|
|
- Метод или переменная доступны НаКлиенте
|
|
|
|
#### Запросы
|
|
|
|
- Временная таблица должна содержать индексы
|
|
- Ограничение максимальной длины числа в запросе
|
|
- Строковый литерал должен содержать CamelCase
|
|
- Соединение с подзапросом
|
|
- Использование конструкции "ДЛЯ ИЗМЕНЕНИЯ"
|
|
- Отбор виртуальной таблицы должен быть в параметрах
|
|
|
|
#### Права ролей
|
|
|
|
- Право роли содержит текст ограничения доступа (RLS)
|
|
- Установлено право "ИнтерактивноеУдаление"
|
|
- Установлено право "ИнтерактивноеУдалениеПомеченныхПредопределенныхДанных"
|
|
- Установлено право "ИнтерактивноеУдалениеПредопределенныхДанных"
|
|
- Установлено право "ИнтерактивноеПометкаУдаленияПредопределенныхДанных"
|
|
- Установлено право "ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных"
|
|
- Право "Активные пользователи" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Администрирование" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Режим "Все функции"" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Администрирование расширений конфигурации" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Администрирование данных" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Интерактивное открытие внешних обработок" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Интерактивное открытие внешних отчетов" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Вывод" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Сохранение данных пользователя" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Automation" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Внешнее соединение" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Толстый клиент" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Тонкий клиент" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Веб-клиент" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Обновление конфигурации базы данных" на корень конфигурации установлено только у стандартной роли
|
|
- Право "Журнал регистрации" на корень конфигурации установлено только у стандартной роли
|