mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2024-11-24 16:53:51 +02:00
0fefbd201f
followed by lines of code Правки по ревью
34 KiB
34 KiB
1С:Стандарты разработки V8 - CHANGELOG - ИСТОРИЯ ИЗМЕНЕНИЙ
[TOC text bullet hierarchy]
0.7.0
Выпуск бета-версии для 1C:EDT 2023.3
Новые проверки
Метаданные
- Превышена максимальная длина числовых данных (31 знак). #82
Формы
Код модулей
- Проверка на уникальность имени поля в doc-comment-field-name #1392
- Проверка модификации ключей структуры вне функции-конструктора #1054
- По умолчанию проверка "Код не должен следовать за асинхронным вызовом" (code-after-async-call) выключена. См. обсуждение в https://github.com/1C-Company/v8-code-style/pull/1408
Запросы
Прочие изменения
Исправленные ошибки
- Ложное срабатывание проверки module-accessibility-at-client в модулях расширений #1207
0.6.0
Выпуск бета-версии для 1C:EDT 2023.2
Исправленные ошибки
- Автосортировщик не сортирует дочерние подсистемы после получения изменений из базы
- Исправлены тексты сообщений в проверке common-module-name-global-client
0.5.0
Выпуск бета-версии для 1C:EDT 2023.1
Новые проверки
Метаданные
- Документ не имеет реквизита "Комментарий"
- Реквизит "Комментарий" имеет корректный тип
- В документе, предполагающем проведение, не установлен флаг "Привилегированный режим при проведении / отмене проведения"
- Проверка наличия буквы "ё" в имени, синониме или комментарии объекта метаданных
- В функциональной опции не установлен флаг "Привилегированный режим при получении"
Формы
- Использована ролевая настройка видимости, редактирования, использования для элемента формы
- Проверка на использование условного оформления в динамеческих списках
Код модулей
- Проверка отсутствия кода после асинхронного вызова
- Проверка использования метода ДанныеФормыВЗначение вместо РеквизитФормыВЗначение
- В проверку использования нерекомендуемых методов (use-non-recommended-method) добавлен метод ПолучитьФорму(GetForm)
- Использование устаревшего метода Найти
- Отсутствует комментарий к экспортной процедуре (функции)
- Документирующий комментарий не содержит секцию "Описание" для экспортной процедуры (функции)
- В проверку "module-self-reference" добавлен параметр, позволяющий пропускать проверку для модулей объектов, наборов записей и менеджеров значений
- Проверка корректного наименования переменных
- Обращение к несуществующему параметру формы
- Необязательный параметр процедуры/функции стоит перед обязательным
- Обращение к опциональному параметру формы
- Функция "РольДоступна" ссылается на несуществующие роли
- Проверка на использование оператора Перейти (Goto) в коде модулей
Запросы
- Доработана проверка ql-temp-table-index: параметр MAX_TOP (Макс. кол-во строк в выборке) теперь настраиваемый.
Прочие изменения
Автосортировка
- В свойствах проекта секция "Авто сортировка" теперь располагается по пути "V8 -> Сортировка объектов метаданных -> Авто сортировка"
- В свойствах проекта в секции "Авто сортировка" более недоступна настройка направления и порядка сортировки. Настройка направления и порядка сортировки доступна в секции "Сортировка объектов метаданных"
- В свойствах проекта в секции "Авто сортировка" добавлена возможность переноса заданных пользователем настроек направления и порядка сортировки в секцию "Сортировка объектов метаданных" и их очистки
- Добавлена консольная команда сортировки проекта
Исправленные ошибки
- Требование к программному продукту: Для переменных общих модулей проверялся префикс расширения и диагностировалась ошибка
- При анализе расположения устаревших методов учитывался только сценарий расположения устаревшей области в программном интерфейса, теперь учитывается еще и служебный программный интерфейс
- Исправлена ошибка в сообщении проверки method-optional-parameter-before-required #1351
- Некорректная работа: md-object-attribute-comment-not-exist #1334
0.4.0
- Выпуск бета-версии для 1C:EDT 2022.2
Новые проверки
Метаданные
- Превышена максимальная длина ресурса регистра накопления или бухгалтерии (25 знаков)
- Для глобальных модулей не следует добавлять постфикс «Клиент»
- Проверка наличия префикса расширения в имени объекта расширения.
- Общий модуль, для которого установлен признак привилегированный, должен именоваться с постфиксом "ПолныеПрава"
Формы
- Один обработчик выполнения назначен нескольким элементам
Код модулей
- Добавление типизированного значения в не типизированную коллекцию
- Общий модуль должен иметь программный интерфейс
- Кэширование программного интерфейса
- Проверка максимального количества допустимых пустых строк
- Чтение отдельных реквизитов объекта из базы данных
- Использование экспортных переменных в модулях объекта
- Использование конструкции "Новый Шрифт"
- Проверка наличия префикса расширения в имени переменной расширения
- Проверка наличия префикса расширения в методе расширения.
- Устаревшая процедура (функция) расположена вне области "УстаревшиеПроцедурыИФункции"
- Использован обработчик событий, подключаемый из кода и не содержащий префикса "Подключаемый_"
Новые быстрые исправления (Quick-fix)
- Исправление превышения максимального количества допустимых пустых строк
Автосортировка
- Добавлена настройка порядка сортировки. Метаданные можно сортировать по правилам конфигуратора
Исправленные ошибки
- Стандарт 492: Добавить исключение в module-unused-method для процедур подключаемых из кода с префиксом "Подключаемый_" #1141
- Стандарт 644: Исправлена ситуация при которой для вложенных областей в устаревшую область диагностировалась ошибка
0.3.0
- Выпуск бета-версии для 1C:EDT 2022.1
Новые проверки
Метаданные
- Длина синонима раздела верхнего уровня, отображаемого в интерфейсе, не должна превышать 35 символов
- Реквизиты составного типа, содержащие ссылочные типы и нессылочные типы вместе
- Реквизиты составного типа, содержащие типы
ЛюбаяСсылка
,СправочникСсылка
,ДокументСсылка
и аналогичные - Небезопасное хранение паролей в информационной базе
Формы
- У реквизита "Ссылка" динамического списка выключен признак "Использовать всегда"
- У поля "Ссылка" таблицы динамического списка не отключена пользовательская видимость
- У каждого события должна быть назначена своя процедура-обработчик
- Проверка заполнения заголовка поля динамического списка
- Реквизит "Ссылка" динамического списка не выведен в таблицу на форме
- Добавлено имя элемента формы в сообщение проверки form-list-ref-user-visibility-enabled
Код модулей
- 3 проверки на избыточное обращение внутри модуля через его имя или псевдоним ЭтотОбъект (к методу, свойству или реквизиту)
- Проверка использования устаревшего "ЭтаФорма" в модуле формы
- Избыточное ключевое слово Экспорт
- Проверка нарушения схемы работы с транзакциями связанной с фиксацией транзакции:
- Вызов "ЗафиксироватьТранзакцию()" находится вне конструкции "Попытка... Исключение"
- Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ЗафиксироватьТранзакцию()"
- Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()"
- Mежду "ЗафиксироватьТранзакцию()" и "Исключение" есть исполняемый код, который может вызвать исключение
- Проверка нарушения схемы работы с транзакциями связанной с отменой транзакции:
- Вызов "ОтменитьТранзакцию()" находится вне конструкции "Попытка... Исключение"
- Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ОтменитьТранзакцию()"
- Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ЗафиксироватьТранзакцию()"
- Mежду "Исключение" и "ОтменитьТранзакцию()" есть исполняемый код, который может вызвать исключение
- Проверка нарушения схемы работы с транзакциями связанной с началом транзакции:
- Mежду "НачатьТранзакцию()" и "Попытка" есть исполняемый код, который может вызвать исключение
- Не найден оператор "Попытка" после вызова "НачатьТранзакцию()"
- Отсутствует удаление временного файла после использования.
- Структура модуля. Проверка областей событий формы.
- Структура модуля. Добавлена проверка области событий.
- Отсутствует включение безопасного режима перед вызовом метода "Выполнить" или "Вычислить"
- Структура модуля. Добавлена проверка метода вне области.
- Структура модуля. Добавлена проверка соответсвия состава областей верхнего модуля стандарту, их порядка и наличия дублей.
- Структура модуля. Проверка что код инициализации расположен в области инициализации.
- Структура модуля. Область объявления переменных.
- Из проверка doc-comment-parameter-section выделена проверка doc-comment-redundant-parameter-section
Запросы
- В качестве правого операнда операции сравнения "ПОДОБНО" указано поле таблицы
- В запросе в бинарной операции используются константные значения
Права ролей
- Установлено право "Удаление"
Новые быстрые исправления (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
- Ложное срабатывание проверки: new-color при сбрасывании цвета в значение Авто можно использовать Новый Цвет #1123
- Ложное срабатывание проверки: ql-constants-in-binary-operation #1142
- Не понятно в какой бинарной операции ошибка ql-constants-in-binary-operation #1143
- Возникает NPE при работе проверки form-list-ref-user-visibility-enabled #1146
- Проверка: doc-comment-parameter-section не находит ошибку #1087
- Исправление пересечения родительских типов ОМД #1138
- Ложное срабатывание проверки module-structure-init-code-in-region #1155
- Ложное срабатывание проверки: module-self-reference #1162
0.2.0
- Выпуск бета-версии для 1C:EDT 2021.3
- Автоматические индексы описаний проверок в справке
Help -> Help contents -> 1C:Code style V8
Новые фичи
- Функциональные опции, добавляемые 1C:Code Style, собраны в одном месте для удобного включения/выключения - в помощнике создания нового проекта или в свойствах проекта.
- В автосортировке метаданных добавлен учет системы запрета редактирования объектов (правила поддержки)
- Контекстное включение строгой типизации в модулях: по проекту, по списку объектов 1С или по списку файлов/каталогов, из контекстного меню в редакторе модуля
Новые проверки
Метаданные
- Периодичность выполнения регламентного задания меньше одной минуты
- Общий модуль, для которого предусмотрен вызов сервера, должен именоваться с постфиксом "ВызовСервера"
- Общий модуль с повторно используемыми значениями должен именоваться с постфиксом "ПовтИсп"
- Клиентский общий модуль с повторно используемыми значениями должен именоваться с постфиксом "КлиентПовтИсп"
- Общий модуль ВызовСервера с повторно используемыми значениями должен именоваться с постфиксом "ВызовСервераПовтИсп"
Код модулей
- Использован метод "РольДоступна()"
- Программный вызов обработчика события формы
- Изменение категории проверки use-non-recommended-method на "стандарты разработки"
- Использование конструкции "Новый Цвет"
- Перенесены проверки документирующего комментария:
- Тип коллекций в документирующем комментарии содержит тип элемента коллекции
- Поле документирующего комментария использует объявление сложного типа вместо ссылки на тип
- Многострочное описание документирующего комментария оканчивается на точку
- Серкция возвращаемого значения документирующего комментария для экспортной функции
- Многострочное описание документирующего комментария содержит определение поля
- Поле документирующего комментария является корректным именем
- Поле документирующего комментария не имеет определения типа
- Многострочное описание документирующего комментария содержит определение параметра
- В секции параметров документирующего комментария пропущено определение параметра
- Документирующий комментарий содежрит секцию возвращаемого значения для процедуры
- Ссылка документирующего комментария на существующий объект
- Секция возвращаемого значения документирующего комментария содержит корректные типы
- Определение типа документирующего комментария
- Активирована ранее отключенная проверка: Секция возвращаемого значения функции-конструктора данных
- Исправлен идентификатор проверки тип в строгой типизации:
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" на корень конфигурации установлено только у стандартной роли
- Право "Внешнее соединение" на корень конфигурации установлено только у стандартной роли
- Право "Толстый клиент" на корень конфигурации установлено только у стандартной роли
- Право "Тонкий клиент" на корень конфигурации установлено только у стандартной роли
- Право "Веб-клиент" на корень конфигурации установлено только у стандартной роли
- Право "Обновление конфигурации базы данных" на корень конфигурации установлено только у стандартной роли
- Право "Журнал регистрации" на корень конфигурации установлено только у стандартной роли