Расширение для 1C:EDT, которое помогает разрабатывать конфигурации/приложения по стандартам 1С для платформы "1С:Предприятие 8".

Overview

Build

1С:Стандарты разработки V8

Расширение для 1C:EDT, которое помогает разрабатывать конфигурации/приложения по стандартам 1С для платформы "1С:Предприятие 8".

Основные возможности

  • Проверки кода и метаданных по стандартам 1С
  • Дополнительные инструменты, улучшающие и ускоряющие работу по стандартам 1С

Участие в проекте

Добро пожаловать! См. правила в соответствующем разделе

Лицензия

Лицензирование расширений размещенных в данном проекте осуществляется на условиях свободной (открытой) лицензии Eclipse Public License - v 2.0 (полный текст лицензии - https://www.eclipse.org/legal/epl-2.0/)

Это означает, что:

  • Вы можете свободно и бесплатно заимствовать код и помещать его в свои проекты, учитывая однако, что такой код не становится вашей интеллектуальной собственностью, Вы лишь получаете неисключительные права его использования с учетом рамок и ограничений, описанных в EPL 2.0
  • Внося изменения в расширение, модифицируя и дорабатывая его, а также объединяя файлы расширения с иными материалами, не относящимися к расширению (далее по тексту как «результаты работ»), Вы также обязаны публиковать это обновленный код на условиях EPL 2.0, т.е. автоматически предоставляете любым третьим лицам, включая ООО «1С-Софт» и иных контрибьюторов, безвозмездное право использования результатов Ваших работ на территории стран всего мира на условиях открытой лицензии EPL 2.0.

Публикуя свои разработки, доработки и исправления к программам других авторов, Вы также подтверждаете, что:

  • являетесь единственным автором и обладателем имущественного права на результаты работ; в случае, если обладателем имущественного права на результаты работ является Ваш работодатель, Вы гарантируете наличие его согласия на публикацию кода на условиях открытой лицензии EPL 2.0;
  • Вы снабдили результаты Ваших работ всеми необходимыми уведомлениями, свидетельствующими о том, что они подчиняются открытой лицензии EPL 2.0;
  • Результаты Ваших работ доступны в виде исходного кода, или Вы обязуетесь сообщить, каким образом третьи лица без существенных затрат могут получить результаты Ваших работ в виде исходного кода;
  • Все имеющиеся ранее уведомления других авторов (license notices) не были Вами удалены или изменены, а указанные Вами уведомления отражают достоверную информацию о Вас как правообладателе Вашего оригинального кода (включая ФИО или наименование организации-работодателя)

Пояснения выше приведены исключительно для удобства восприятия основных положений лицензии EPL 2.0. и не заменяет содержание понятий, приведенных по тексту лицензионного соглашения. Для более детального понимания Ваших прав и обязанностей рекомендуем ознакомиться с полным текстом открытой лицензии EPL 2.0.

Comments
  • Проверка на запросы в цикле

    Проверка на запросы в цикле

    1. Ищутся все методы, в которых есть запросы
    2. В цикле ищутся все методы, которые вызывают методы, в которых есть запросы
    3. Обходятся все циклы. Для каждого оператора цикла проверяется, что он не является выполнением запроса или вызовом метода с запросом.

    Closes #17

    opened by DoublesunRUS 12
  • 855 Проверка form-items-single-event-handler

    855 Проверка form-items-single-event-handler

    Что сделано

    • Реализована проверка единственного назначения обработчиков событий элементов формы

    Чек-лист

    Общее:

    • [x] ветка PR обновлена из master и нет конфликтов
    • [x] Тесты-кейсы, JUnit тесты правильного и неправильного состояния
    • [x] Измененные Вами исходники отформатированы в соответствии с конвенцией
    • [ ] Авто-аудит (SonarQube и CheckStyle) пройден, покрытие кода хорошее, ошибок нет, плохой код устранен
    • [x] Добавлена запись в ИСТОРИЮ ИЗМЕНЕНИЯ, включаемая в пользовательскую документацию плагина

    Если применимо:

    • [x] Пользовательская документация на доп.инструменты написана (на русском)
    • [x] Описание проверок - на двух языках

    Закрываемые задачи

    Closes #855

    @1C-Company @marmyshev прошу сделать аудит

    Analyze 
    opened by RedMammoth 8
  • Ложное отображение ошибки: notify-description-to-server-procedure

    Ложное отображение ошибки: notify-description-to-server-procedure

    Название/код проверки

    Название проверки: Процедура описания оповещения должна существовать и быть экспортной Код проверки: notify-description-to-server-procedure

    Версия плагина: 0.3.0.116

    Пример кода/метаданных содержащих ошибку

    // В модуле формы объекта
    
    &НаКлиенте
    Процедура ЗаполнитьДокумент(Команда)
    	ТекстВопроса = НСтр("ru = 'Перед заполнением суммы будут очищены, продолжить?'");
    	Оповещение = Новый ОписаниеОповещения("ВопросЗаполнитьПоДоговоруЗавершение", ЭтотОбъект);
    	ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ВопросЗаполнитьПоДоговоруЗавершение(Результат, ДополнительныеПараметры) Экспорт
    	
    	Если Результат = КодВозвратаДиалога.Да Тогда
    		//...
    	КонецЕсли;
    	
    КонецПроцедуры
    

    Почему это НЕ ошибка

    Потому что процедура существует и экспортная

    Дополнительные материалы

    1 - маркер ошибки в дереве 2 - единственная "красная" ошибка 3 - нет маркера в коде 4 - процедура есть

    Ошибка/предупреждение полностью исчезает если использовать устаревшее ЭтаФорма вместо ЭтотОбъект

    Оповещение = Новый ОписаниеОповещения("ВопросЗаполнитьПереданнымиКонтрагентуОСЗавершение", **ЭтаФорма**);
    

    Очистка проекта не помогает, приложение версии 2022.1.0 В проекте внешней обработки не повторяется. image

    bug standards 
    opened by ilya2184 7
  • Добавить имя элемента формы в сообщение проверки form-list-ref-user-visibility-enabled

    Добавить имя элемента формы в сообщение проверки form-list-ref-user-visibility-enabled

    Описание проблемы

    В большинстве случаев на формах списка всего один динамический список и всё очевидно. Но бывают сложные формы, содержащие множество динамических списков, и в таких случаях неясно, на каком именно списке диагностирована ошибка, приходится перебирать все вручную. Пример формы с множеством динамических списков - Обработка.ПодборТоваровВДокументПродажи.Форма.Форма из состава УТ/ERP.

    Описание решения проблемы

    Добавить в сообщение имя элемента формы: У поля "Ссылка" таблицы динамического списка %ИмяЭлемента% не отключена пользовательская видимость

    Дополнительная информация

    No response

    enhancement form 
    opened by adminimusRU 6
  • Типизация кода. Подсвечивать ошибки от strict-types другим цветом

    Типизация кода. Подсвечивать ошибки от strict-types другим цветом

    Описание проблемы

    Ошибки в редакторе выглядят одинаково - и реальные ошибки в коде, которые точно приведут к падению в рантайме и ошибки приведения типов (ложноположительные в большинстве случаев из-за разных причин).

    Это приводит к тому, что забытую точку с запятой просто не видно - весь код становится красным, а истинную причину найти получается только в рантайме.

    При разработке без типизирования можно добавить новый параметр у локального метода и сразу увидеть упавшие вызовы. При типизировании так не получается.

    Описание решения проблемы

    Отрисовывать ошибки типизации с другим типом, цветом и пиктограммой. Например, фиолетовым, а в иконке сделать "t"

    Дополнительная информация

    No response

    enhancement 
    opened by Stepa86 6
  • #457 Проверка ОбменДанными.Загрузка проверяет расширения

    #457 Проверка ОбменДанными.Загрузка проверяет расширения

    Что сделано

    • Исправлена проверка - события проверяются в расширении по аннотации в которой указано процедура обработчик события ПриЗаписи, ПередЗаписью и ПередУдалением

    Чек-лист

    Общее:

    • [x] ветка PR обновлена из master и нет конфликтов
    • [ ] Тесты-кейсы, JUnit тесты правильного и неправильного состояния
    • [x] Измененные Вами исходники отформатированы в соответствии с конвенцией
    • [x] Авто-аудит (SonarQube и CheckStyle) пройден, покрытие кода хорошее, ошибок нет, плохой код устранен
    • [ ] Добавлена запись в ИСТОРИЮ ИЗМЕНЕНИЯ, включаемая в пользовательскую документацию плагина

    Если применимо:

    • [ ] Пользовательская документация на доп.инструменты написана (на русском)
    • [ ] Описание проверок - на двух языках

    Закрываемые задачи

    Closes #457

    opened by marmyshev 6
  • Исключить из проверки

    Исключить из проверки "Метод не найден в исходном объекте" проверку методов COM-объектов.

    Для COM-объектов невозможно определить список методов, их параметры и возвращаемые значения, поэтому проверка "Метод не найден в исходном объекте" к ним неприменима.

    В тексте модуля с включенной проверкой типов указать любой метод любого COM-объекта, например Команда = Новый COMОбъект("ADODB.Command"); Выборка = Команда.Execute();

    Для COM-Объектов проверка "Метод не найден в исходном объекте" не должна выполняться.

    image

    Окружение (пожалуйста укажите информацию):

    • OS: Windows
    • Версия 1C:Code-Style-V8 0.1.0.119
    • Версия 1C:EDT Ruby 2021.2.5
    enhancement bsl strict-types 
    opened by DmitryShvaika 6
  • Стандарт 455: Структура модуля (анализ возможных проверок)

    Стандарт 455: Структура модуля (анализ возможных проверок)

    Структура модуля

    Возможные проверки

    • [x] module-structure-top-regions
      #532
      #533 #488 #614 Модуль содержит области только из списка стандартрных верхнеуровневых областей по типу модуля.

    Параметры проверки: - список дополнительных кастомных верхнеуровневых областей, общий для всех типов модулей. - опция дополнительной проверки порядка стандартных областей, кастомные области в проверке не учитываются #488 - опция дополнительной проверки дублей стандартных областей #614

    текст из стандарта:

    1.1. В программном модуле (общие модули, модули объектов, модули менеджеров объектов, модули форм, команд и т.п.) в общем случае могут присутствовать следующие разделы в приведенной ниже последовательности:

    • заголовок модуля
    • раздел описания переменных
    • экспортные процедуры и функции модуля, составляющие его программный интерфейс
    • обработчики событий объекта (формы)
    • служебные процедуры и функции модуля
    • раздел инициализации

    Некоторые разделы могут присутствовать только в модулях определенного вида. Например, обработчики событий элементов форм могут присутствовать только в модулях форм, а раздел описания переменных и раздел инициализации не могут быть определены в неглобальных общих модулях, модулях менеджеров объектов, наборов записей, значений констант и модуле сеанса.

    Требование о разделении кода модуля на разделы призвано повысить читаемость кода и упростить внесение изменений в код разными авторами (разработчиками) как при коллективной разработке, так и при доработке прикладных решений на конкретных внедрениях.

    • [x] module-structure-method-in-regions #373 Метод расположен в корректной стандартной области (за исключением области описания переменных и области инициализации).

    1.4. Шаблон (заготовка для копирования) разделов для общих модулей:

    русск.
    
    #Область ПрограммныйИнтерфейс
    // Код процедур и функций
    #КонецОбласти
    
    #Область СлужебныйПрограммныйИнтерфейс
    // Код процедур и функций
    #КонецОбласти
    
    #Область СлужебныеПроцедурыИФункции
    // Код процедур и функций
    #КонецОбласти
    англ.
    
    #Region Public
    // Enter code here.
    #EndRegion
    
    #Region Internal
    // Enter code here.
    #EndRegion
    
    #Region Private
    // Enter code here.
    #EndRegion
    

    Раздел «Программный интерфейс» содержит экспортные процедуры и функции, предназначенные для использования другими объектами конфигурации или другими программами (например, через внешнее соединение). Раздел «Служебный программный интерфейс» предназначен для модулей, которые являются частью некоторой функциональной подсистемы. В нем должны быть размещены экспортные процедуры и функции, которые допустимо вызывать только из других функциональных подсистем этой же библиотеки. Раздел «Служебные процедуры и функции» содержит процедуры и функции, составляющие внутреннюю реализацию общего модуля. В тех случаях, когда общий модуль является частью некоторой функциональной подсистемы, включающей в себя несколько объектов метаданных, в этом разделе также могут быть размещены служебные экспортные процедуры и функции, предназначенные только для вызова из других объектов данной подсистемы.

    • [x] module-structure-init-code-in-regions #603 #535 #375 Код инициализации расположен в области не предназначенной для инициализации.

    текст из стандарта:

    2.7. Раздел инициализации содержит операторы, инициализирующие переменные модуля или объект (форму). Например:

    русск.
    
    #Область Инициализация
    
    АдресПоддержки = "[email protected]"; 
    ВыполнитьИнициализацию();
    ...
    
    #КонецОбласти
    англ.
    
    #Region Initialize
    
    SupportEmail = "[email protected]";
    Ctor();
    ...
    
    #EndRegion
    
    • [x] module-structure-var-in-regions #534 #531 #200 Переменная объявлена в области не предназначенной для описания переменных.

    текст из стандарта:

    2.2. Раздел описания переменных. Имена переменных назначаются согласно общим правилам образования имен переменных, а их использование описывается в статье Использование глобальных переменных в программных модулях.

    Все переменные модуля должны быть снабжены комментарием, достаточным для понимания их назначения. Комментарий рекомендуется размещать в той же строке, где объявляется переменная. Пример:

    русск.
    
    #Область ОписаниеПеременных
    
    Перем ВалютаУчета;
    Перем АдресПоддержки;
    ...
    
    #КонецОбласти
    англ.
    
    #Region Variables
    
    Var PresentationCurrency;
    Var SupportEmail;
    ...
    
    #EndRegion
    
    • [x] module-structure-event-regions #773 #330 Проверка области Обработка событий (кроме форм).

    текст из стандарта:

    1.5. Шаблон оформления разделов для модулей объектов, менеджеров, наборов записей, обработок, отчетов и т.п.: 1.7. Шаблон оформления разделов для модулей команд:

    русск.
    
    #Область ОбработчикиСобытий
    // Код процедур и функций
    #КонецОбласти
    англ.
    
    #Region EventHandlers
    // Enter code here.
    #EndRegion
    

    Раздел «Обработчики событий» содержит обработчики событий модуля объекта (ПриЗаписи, ПриПроведении и др.)

    • [x] module-structure-form-event-regions Проверка областей событий формы (форма, шапка, таблица и команды).

      Параметр проверки:

      • Многоуровневое вложение областей

    текст из стандарта:

    1.6. Шаблон оформления разделов для модулей форм:

    русск.
    
    #Область ОписаниеПеременных
    
    #КонецОбласти
    
    #Область ОбработчикиСобытийФормы
    // Код процедур и функций
    #КонецОбласти
    
    #Область ОбработчикиСобытийЭлементовШапкиФормы
    // Код процедур и функций
    #КонецОбласти
    
    #Область ОбработчикиСобытийЭлементовТаблицыФормы<ИмяТаблицыФормы>
    // Код процедур и функций
    #КонецОбласти
    
    #Область ОбработчикиКомандФормы
    // Код процедур и функций
    #КонецОбласти
    
    #Область СлужебныеПроцедурыИФункции
    // Код процедур и функций
    #КонецОбласти
    англ.
    
    #Region Variables
    
    #EndRegion
    
    #Region FormEventHandlers
    // Enter code here.
    #EndRegion
    
    #Region FormHeaderItemsEventHandlers
    // Enter code here.
    #EndRegion
    
    #Region FormTableItemsEventHandlers<FormTableName>
    // Enter code here.
    #EndRegion
    
    #Region FormCommandsEventHandlers
    // Enter code here.
    #EndRegion
    
    #Region Private
    // Enter code here.
    #EndRegion
    

    Раздел «Обработчики событий формы» содержит процедуры-обработчики событий формы: ПриСозданииНаСервере, ПриОткрытии и т.п. Раздел «Обработчики событий элементов шапки формы» содержит процедуры-обработчики элементов, расположенных в основной части формы (все, что не связано с таблицами на форме). В разделах «Обработчики событий элементов таблицы формы <имя таблицы формы>» размещаются процедуры-обработчики таблиц формы и элементов таблиц. Для процедур-обработчиков каждой таблицы должен быть создан свой раздел. Раздел «Обработчики команд формы» содержит процедуры-обработчики команд формы (имена которых задаются в свойстве Действие команд формы). Раздел «Служебные процедуры и функции» имеет такое же предназначение, что и в общих модулях.

    • [x] module-structure-non-export-in-api-regions Не экспортный метод находится в интерфейсных областях - реализовано с проверкой module-structure-method-in-regions

    • [x] form-commands-one-action-handler #856 Один обработчик выполнения назначен нескольким элементам

    текст из стандарта:

    2.4.3. У каждого события должна быть назначена своя процедура-обработчик. Если одинаковые действия должны выполняться при возникновении событий в разных элементах формы следует:

    • создать отдельную процедуру (функцию), выполняющую необходимые действия
    • для каждого элемента формы создать отдельный обработчик с именем, назначаемым по умолчанию
    • из каждого обработчика вызвать требуемую процедуру (функцию).

    Например, неправильно:

    &НаКлиенте
    Процедура ПоИсполнителюПриИзменении(Элемент)
     ПараметрыОтбора = Новый Соответствие();
     ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору);
     ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю);
     УстановитьОтборСписка(Список, ПараметрыОтбора);
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПоАвторуПриИзменении(Элемент)
     ПоИсполнителюПриИзменении(Неопределено);
    КонецПроцедуры
    правильно:
    
    &НаКлиенте
    Процедура ПоИсполнителюПриИзменении(Элемент)
     УстановитьОтбор();
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПоАвторуПриИзменении(Элемент)
     УстановитьОтбор();
    КонецПроцедуры
    
    &НаСервере
    Процедура УстановитьОтбор()
     ПараметрыОтбора = Новый Соответствие();
     ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору);
     ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю);
     УстановитьОтборСписка(Список, ПараметрыОтбора);
    КонецПроцедуры 
    

    Это требование обусловлено тем, что логически процедуры-обработчики событий не предназначены для использования в коде модуля, а вызываются непосредственно платформой. Смешение же этих двух сценариев в одной процедуре неоправданно усложняет ее логику и снижает ее устойчивость (вместо одного предусмотренного сценария вызова - по событию из платформы - код процедуры должен рассчитывать и на другие "прямые" вызовы из кода).

    standards 
    opened by iArtemv 5
  • Использование ссылочных и нессылочных типов в составном типе.

    Использование ссылочных и нессылочных типов в составном типе.

    Что сделано

    • Опишите изменения функциональности
    • Реализованные проверки кода и метаданных

    Чек-лист

    Общее:

    • [x] ветка PR обновлена из master и нет конфликтов
    • [x] Тесты-кейсы, JUnit тесты правильного и неправильного состояния
    • [x] Измененные Вами исходники отформатированы в соответствии с конвенцией
    • [x] Авто-аудит (SonarQube и CheckStyle) пройден, покрытие кода хорошее, ошибок нет, плохой код устранен
    • [x] Добавлена запись в ИСТОРИЮ ИЗМЕНЕНИЯ, включаемая в пользовательскую документацию плагина

    Если применимо:

    • [x] Пользовательская документация на доп.инструменты написана (на русском)
    • [x] Описание проверок - на двух языках

    Закрываемые задачи

    Closes #763

    opened by iArtemv 5
  • При использовании строгой типизации IDE не сигнализтрует о неправильных типах аргументов при  вызове функции/процедуры

    При использовании строгой типизации IDE не сигнализтрует о неправильных типах аргументов при вызове функции/процедуры

    Описание ошибки

    Если я включаю в модуле режим строгой типизации, то при вызове процедур/функций ide не проверяет соответствие типов передаваемых аргументов

    Как воспроизвести

    1. Создать общий модуль
    2. Включить строгую типизации
    3. Создать процедуру с одним аргументом
    4. Задать тип аргумента, например, Число
    5. Создать второй модуль
    6. Включить в нём строгую типизацию
    7. Создать в нём процедуру, в теле которой есть вызов процедуры первого модуля, но в качестве аргумента передать объект отличного типа, напоимер, строку
    8. IDE никак не сигнализирует передачу объекта неправильного типа

    Скриншоты

    Screenshot_2022-01-07-10-30-47-337_com microsoft rdc androidx

    Ожидаемое поведение

    IDE выдаёт предупреждение, а лучше ошибку в месте передачи в функцию/процедуру объекта неправильного типа.

    Лог рабочей области

    Версия 1С:Code style V8

    0.2.0.114

    Версия 1С:EDT

    2021.2.12, 2021.3.0

    Операционная система

    Linux

    Дополнительная информация

    No response

    bug bsl strict-types 
    opened by RedMammoth 5
  • Исключение проверки ((QueryInLoopCheck.java:291))

    Исключение проверки ((QueryInLoopCheck.java:291))

    Опишите ошибку

    В логах ошибка java.lang.NullPointerException

    Скриншоты

    image

    Окружение (пожалуйста укажите информацию):

    • OS: Win10
    • Версия 1C:Code-Style-V8 1С:Стандарты разработки V8 0.1.0.126
    • Версия 1C:EDT Ruby 2021.2.6

    Дополнительная информация

    java.lang.NullPointerException at java.base/java.lang.String$CaseInsensitiveComparator.compare(String.java:1224) at java.base/java.lang.String$CaseInsensitiveComparator.compare(String.java:1218) at java.base/java.util.TreeMap.getEntryUsingComparator(TreeMap.java:374) at java.base/java.util.TreeMap.getEntry(TreeMap.java:343) at java.base/java.util.TreeMap.containsKey(TreeMap.java:231) at java.base/java.util.TreeSet.contains(TreeSet.java:234) at com.e1c.v8codestyle.bsl.check.QueryInLoopCheck.isQueryExecution(QueryInLoopCheck.java:229) at com.e1c.v8codestyle.bsl.check.QueryInLoopCheck.getMethodsWithQuery(QueryInLoopCheck.java:291) at com.e1c.v8codestyle.bsl.check.QueryInLoopCheck.check(QueryInLoopCheck.java:140) at com.e1c.g5.v8.dt.check.components.BasicCheck.check(BasicCheck.java:76) at com.e1c.g5.v8.dt.internal.check.CheckExecutor.runLanguageChecks(CheckExecutor.java:679) at com.e1c.g5.v8.dt.internal.check.CheckExecutor.validateLanguage(CheckExecutor.java:209) at com.e1c.g5.v8.dt.internal.check.bsl.BslValidationContributor.validate(BslValidationContributor.java:159) at com._1c.g5.v8.dt.bsl.validation.IBslValidationContributor$pbryglu.validate(Unknown Source) at com._1c.g5.v8.dt.bsl.validation.ExternalValidatorServiceProvider.validate(ExternalValidatorServiceProvider.java:75) at com._1c.g5.v8.dt.bsl.validation.BslCancelableDiagnostician.doValidateContents(BslCancelableDiagnostician.java:168) at com._1c.g5.modeling.xtext.validation.CustomCancelableDiagnostician.validate(CustomCancelableDiagnostician.java:71) at com._1c.g5.modeling.xtext.validation.CustomCancelableDiagnostician.validate(CustomCancelableDiagnostician.java:84) at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:142) at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:147) at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:125) at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:91) at com._1c.g5.v8.dt.lcore.validation.NotifyingResourceValidator.validate(NotifyingResourceValidator.java:51) at com._1c.g5.v8.dt.bsl.validation.BslNotifyingResourceValidator.validate(BslNotifyingResourceValidator.java:98) at com._1c.g5.v8.dt.bsl.ui.editor.BslXtextDocumentProvider$BslValidationJob$1$2.execute(BslXtextDocumentProvider.java:391) at com._1c.g5.v8.dt.bsl.ui.editor.BslXtextDocumentProvider$BslValidationJob$1$2.execute(BslXtextDocumentProvider.java:1) at com._1c.g5.v8.bm.integration.internal.reactor.Reactor.executeTask(Reactor.java:706) at com._1c.g5.v8.bm.integration.internal.reactor.Reactor.executeTask(Reactor.java:667) at com._1c.g5.v8.bm.integration.internal.reactor.Reactor.executeReadOnlyTask(Reactor.java:146) at com._1c.g5.v8.bm.integration.internal.BmModel.executeReadonlyTask(BmModel.java:227) at com._1c.g5.v8.dt.bsl.ui.editor.BslXtextDocumentProvider$BslValidationJob$1.exec(BslXtextDocumentProvider.java:385) at com._1c.g5.v8.dt.bsl.ui.editor.BslXtextDocumentProvider$BslValidationJob$1.exec(BslXtextDocumentProvider.java:1) at org.eclipse.xtext.util.concurrent.CancelableUnitOfWork.exec(CancelableUnitOfWork.java:27) at org.eclipse.xtext.util.concurrent.WrappingCancelableUnitOfWork.exec(WrappingCancelableUnitOfWork.java:58) at org.eclipse.xtext.util.concurrent.CancelableUnitOfWork.exec(CancelableUnitOfWork.java:27) at org.eclipse.xtext.resource.OutdatedStateManager.exec(OutdatedStateManager.java:70) at com._1c.g5.v8.dt.bsl.ui.editor.BslXtextDocument$CustomXtextDocumentLocker.internalReadOnly(BslXtextDocument.java:538) at com._1c.g5.v8.dt.bsl.ui.editor.BslXtextDocument$CustomXtextDocumentLocker.readOnly(BslXtextDocument.java:429) at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:136) at org.eclipse.xtext.util.concurrent.IReadAccess.tryReadOnly(IReadAccess.java:50) at com._1c.g5.v8.dt.bsl.ui.editor.BslXtextDocumentProvider$BslValidationJob.createIssues(BslXtextDocumentProvider.java:336) at org.eclipse.xtext.ui.editor.validation.ValidationJob.run(ValidationJob.java:68) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63 лог файл.log )

    bug 
    opened by Desar14 5
  • Ложное срабатывание проверки: doc-comment-type

    Ложное срабатывание проверки: doc-comment-type

    Название/код проверки

    Код проверки: doc-comment-type

    Версия плагина: 0.4.0.131

    Пример кода/метаданных содержащих ошибку

    // @strict-types
    #Область ПрограммныйИнтерфейс
    
    Процедура Тест() Экспорт
    	Проверка2(Справочники.Справочник1.СоздатьЭлемент().ТабличнаяЧасть1);
    	Проверка1(Документы.Документ1.СоздатьДокумент().ТабличнаяЧасть1);
    	Проверка3(Обработки.Обработка1.Создать().ТабличнаяЧасть1);
    КонецПроцедуры
    
    #КонецОбласти
    
    #Область СлужебныеПроцедурыИФункции
    
    // Параметры:
    //  Параметр - ДокументТабличнаяЧастьСтрока
    Процедура Проверка1(Параметр)
    	Возврат;
    КонецПроцедуры
    
    // Параметры:
    //  Параметр - СправочникТабличнаяЧастьСтрока
    Процедура Проверка2(Параметр)
    	Возврат;
    КонецПроцедуры
    
    // Параметры:
    //  Параметр - ОбработкаТабличнаяЧастьСтрока
    Процедура Проверка3(Параметр)
    	Возврат;
    КонецПроцедуры
    
    #КонецОбласти
    

    image

    Почему это НЕ ошибка

    Типы подсказаны контент-ассистом и проверка invocation-parameter-type-intersect не выдает ошибок. image

    bug standards 
    opened by RedMammoth 0
  • Ложное срабатывание проверки invocation-parameter-type-intersect для СтрокаТабличнойЧасти и Документ/Справочник/ОбработкаТабличнаяЧастьСтрока

    Ложное срабатывание проверки invocation-parameter-type-intersect для СтрокаТабличнойЧасти и Документ/Справочник/ОбработкаТабличнаяЧастьСтрока

    Название/код проверки

    Код проверки: invocation-parameter-type-intersect

    Версия плагина: 0.4.0.131

    Пример кода/метаданных содержащих ошибку

    // @strict-types
    #Область ПрограммныйИнтерфейс
    
    Процедура Тест() Экспорт
    	ПроверкаТипаТЧ(Справочники.Справочник1.СоздатьЭлемент().ТабличнаяЧасть1);
    	ПроверкаТипаТЧ(Документы.Документ1.СоздатьДокумент().ТабличнаяЧасть1);
    	ПроверкаТипаТЧ(Обработки.Обработка1.Создать().ТабличнаяЧасть1);
    КонецПроцедуры
    
    #КонецОбласти
    
    #Область СлужебныеПроцедурыИФункции
    
    // Параметры:
    //  Параметр - СтрокаТабличнойЧасти
    Процедура ПроверкаТипаТЧ(Параметр)
    	Возврат;
    КонецПроцедуры
    
    #КонецОбласти
    

    image

    Почему это НЕ ошибка

    Мне кажется, что тип СтрокаТабличнойЧасти является общим типом для частного ДокументТабличнаяЧастьСтрока и т.п. Поэтому при написании метода, работающего с любой строкой табличной части, в качестве типа параметра указываю общий тип и ожидаю, что передача частного пройдет без ошибок.

    Если я не прав на счет общего типа, подскажите, пожалуйста какой использовать. В контент-ассисте ничего подходящего больше не нашел.

    bug standards 
    opened by RedMammoth 0
  • Аннотации для явных/неявных серверных вызовов с клиента

    Аннотации для явных/неявных серверных вызовов с клиента

    Описание проблемы

    Сейчас для анализа и контроля количества серверных вызовов приходится запускать отладку и/или выполнять замеры производительности. Однако, мне кажется, что статический анализ кода тоже может справится с определением случаев серверного вызова со стороны клиента.

    Описание решения проблемы

    Предлагаю сделать сервис, собирающий информацию о явных и неявных серверных вызовов с клиента. Из неявных вызовов предлагаю исключить первое обращение к общим клиентским модулям см. п.1.1 типовое исключение (https://its.1c.ru/db/v8std/content/487/hdoc)

    Для человеческого контроля предлагаю добавить в 1С:ЕДТ аннотации/маркеры показывающие места вызовов в модулях: image

    Я бы хотел видеть три маркера:

    • явный серверный вызов
    • неявный серверный вызов
    • серверный вызов дальше по стеку (если вызывается клиентская процедура, у которой внутри есть серверный вызов).

    Но если это окажет существенное влияние на производительность ЕДТ, то можно оставить один общий маркер для явных/неявных серверных вызовов, а вложенные вызовы и контроль количества вызовов в контексте метода уже реализовывать в отдельных проверках

    Дополнительная информация

    No response

    enhancement 
    opened by RedMammoth 0
  • Проверка использования значений ограниченных структурой (аналог перечислений)

    Проверка использования значений ограниченных структурой (аналог перечислений)

    Описание проблемы

    Есть ситуации, в которых чтобы избавиться от магических чисел/строк и т.п. создают функцию аналог перечисления:

    // Возвращаемое значение:
    //  ФиксированнаяСтруктура :
    // * ПонятноеПредставление1 - Число - Подробности
    // * ПонятноеПредставление2 - Число - Подробности
    // * ПонятноеПредставление3 - Число - Подробности
    //
    Функция МагическиеЧисла() Экспорт
    	МагическиеЧисла = Новый Структура;
    	МагическиеЧисла.Вставить("ПонятноеПредставление1", 1);
    	МагическиеЧисла.Вставить("ПонятноеПредставление2", 13);
    	МагическиеЧисла.Вставить("ПонятноеПредставление3", 42);
    	Возврат Новый ФиксированнаяСтруктура(МагическиеЧисла);
    КонецФункции
    

    Однако, дальше по коду могут продолжать использовать магические значения, вместо ключей функции-перечисления. Запрещать думаю не хорошо, а вот выдавать предупреждение, что следует использовать значения из функции было бы неплохо.

    Описание решения проблемы

    Предлагаю сделать проверку, которая будет выдавать предупреждение, если в качестве параметра, использующего значение из конечного множества, заданного функцией (ссылка на функцию приведена в комментарии), передается значение без использование указанной функции.

    Например, есть такой код:

    // @strict-types
    
    #Область ПрограммныйИнтерфейс
    
    // Возвращаемое значение:
    //  ФиксированнаяСтруктура :
    // * ПонятноеПредставление1 - Число - Подробности
    // * ПонятноеПредставление2 - Число - Подробности
    // * ПонятноеПредставление3 - Число - Подробности
    //
    Функция МагическиеЧисла() Экспорт
    	МагическиеЧисла = Новый Структура;
    	МагическиеЧисла.Вставить("ПонятноеПредставление1", 1);
    	МагическиеЧисла.Вставить("ПонятноеПредставление2", 13);
    	МагическиеЧисла.Вставить("ПонятноеПредставление3", 42);
    	Возврат Новый ФиксированнаяСтруктура(МагическиеЧисла);
    КонецФункции
    
    // Параметры:
    //  МагическоеЧисло - Число - см. МагическиеЧисла
    //
    Процедура КакаяТоПроцедура(МагическоеЧисло) Экспорт
    	Возврат;
    КонецПроцедуры
    
    #КонецОбласти
    

    Неправильно:

    Процедура Неправильно() Экспорт
    	КакаяТоПроцедура(13);
    КонецПроцедуры
    

    Правильно:

    Процедура Тест() Экспорт
    	МагическиеЧисла = МагическиеЧисла();
    	КакаяТоПроцедура(МагическиеЧисла.ПонятноеПредставление1);
    КонецПроцедуры
    

    Дополнительная информация

    No response

    enhancement 
    opened by RedMammoth 0
  • Код расположен после асинхронного вызова

    Код расположен после асинхронного вызова

    Название проверки

    Код расположен после асинхронного вызова

    Английское название проверки

    The code is located after the asynchronous call

    Правило анализа кода/метаданных

    При асинхронном подходе вызов метода выполняется как обычно, но управление возвращается вызывающему коду до того, как асинхронный метод завершит свою работу. После этого вызывающий код продолжает свое выполнение. Особенность асинхронного выполнения: исполнение на стороне вызывающего кода продолжится до того, как полностью закончилось исполнение вызванного метода

    Для правильного решения нужно вынести весь код, который должен быть выполнен после выполнения асинхронного действия, в экспортный метод и указать его имя в обработке оповещения, которая будет вызвана после завершения асинхронного действия. Или использовать асинхронность через обещания, например, Ждать ПредупреждениеАсинх(Текст);

    Мета-информация (пожалуйста, заполните если знаете):

    • Номер стандарта: например: 124
    • Код проверки: code-after-async-call
    • Тип ошибки: WARNING
    • Критичность: MAJOR
    • Код ошибки АПК: например: 539, если аналогичная проверка существует

    Параметры проверки

    Текст ошибки

    Код выполняются без ожидания выполнения асинхронного метода.

    Пример некорректного решения

    Текст = "Текст предупреждения";
    ПоказатьПредупреждение( , Текст);
    Сообщить("Закрыли предупреждение");
    

    Описание, почему так делать нельзя

    Пример корректного решения

    Текст = "Текст предупреждения";
    Ждать ПредупреждениеАсинх(Текст);
    Сообщить("Закрыли предупреждение");
    
    &НаКлиенте
    Процедура Команда1(Команда)
        Оповещение = Новый ОписаниеОповещения("ПредупреждениеЗавершение", ЭтотОбъект);
        Текст = "Текст предупреждения";
        ПоказатьПредупреждение(Оповещение, Текст);
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПредупреждениеЗавершение(ДополнительныеПараметры) Экспорт
        Сообщить("Закрыли предупреждение");
    КонецПроцедуры;
    
    

    Дополнительные материалы

    standards 
    opened by iArtemv 0
  • Сортировка как в конфигураторе

    Сортировка как в конфигураторе

    Что сделано

    Добавлен настройка порядка сортировки. По умолчанию используется стандартный порядок. image

    Реализована сортировка метаданных как в конфигураторе, сначала подчеркивание, потом цифры. Новая_заметка_110722_010745_PM (2)

    • Опишите изменения функциональности
    • Реализованные проверки кода и метаданных

    Чек-лист

    Общее:

    • [x] ветка PR обновлена из master и нет конфликтов
    • [x] Тесты-кейсы, JUnit тесты правильного и неправильного состояния
    • [x] Измененные Вами исходники отформатированы в соответствии с конвенцией
    • [x] Авто-аудит (SonarQube и CheckStyle) пройден, покрытие кода хорошее, ошибок нет, плохой код устранен
    • [x] Добавлена запись в ИСТОРИЮ ИЗМЕНЕНИЯ, включаемая в пользовательскую документацию плагина

    Если применимо:

    • [ ] Пользовательская документация на доп.инструменты написана (на русском)
    • [ ] Описание проверок - на двух языках

    Закрываемые задачи

    Closes #??

    opened by fedoseenkoff 0
Releases(v0.3.fix)
  • v0.3.beta(Aug 16, 2022)

    Релиз поставляется в составе 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
    Source code(tar.gz)
    Source code(zip)
    repo.zip(1.49 MB)
  • v0.3.alpha(Jul 19, 2022)

    Релиз поставляется в составе 1C:EDT 2022.1 - самостоятельная установка не требуется.

    Новые проверки

    Метаданные

    • Длина синонима раздела верхнего уровня, отображаемого в интерфейсе, не должна превышать 35 символов
    • Реквизиты составного типа, содержащие ссылочные типы и нессылочные типы вместе
    • Реквизиты составного типа, содержащие типы ЛюбаяСсылка, СправочникСсылка, ДокументСсылка и аналогичные
    • Небезопасное хранение паролей в информационной базе

    Формы

    • У реквизита "Ссылка" динамического списка выключен признак "Использовать всегда"
    • У поля "Ссылка" таблицы динамического списка не отключена пользовательская видимость
    • У каждого события должна быть назначена своя процедура-обработчик

    Код модулей

    • 3 проверки на избыточное обращение внутри модуля через его имя или псевдоним ЭтотОбъект (к методу, свойству или реквизиту)
    • Проверка использования устаревшего "ЭтаФорма" в модуле формы
    • Проверка нарушения схемы работы с транзакциями связанной с фиксацией транзакции:
      1. Вызов "ЗафиксироватьТранзакцию()" находится вне конструкции "Попытка... Исключение"
      2. Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ЗафиксироватьТранзакцию()"
      3. Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ОтменитьТранзакцию()"
      4. Mежду "ЗафиксироватьТранзакцию()" и "Исключение" есть исполняемый код, который может вызвать исключение
    • Проверка нарушения схемы работы с транзакциями связанной с отменой транзакции:
      1. Вызов "ОтменитьТранзакцию()" находится вне конструкции "Попытка... Исключение"
      2. Отсутствует вызов "НачатьТранзакцию()", хотя вызываются "ОтменитьТранзакцию()"
      3. Для вызова "НачатьТранзакцию()" отсутствует парный вызов "ЗафиксироватьТранзакцию()"
      4. Mежду "Исключение" и "ОтменитьТранзакцию()" есть исполняемый код, который может вызвать исключение
    • Проверка нарушения схемы работы с транзакциями связанной с началом транзакции:
      1. Mежду "НачатьТранзакцию()" и "Попытка" есть исполняемый код, который может вызвать исключение
      2. Не найден оператор "Попытка" после вызова "НачатьТранзакцию()"
    • Отсутствует удаление временного файла после использования.

    Новые быстрые исправления (Quick-fix)

    • 3 исправления исправления для удаления избыточного обращения внутри модуля к самому себе
    • Замена в модуле формы устаревшего свойства "ЭтаФорма" на "ЭтотОбъект"
    • Конвертация функции в процедуру

    Исправленные ошибки

    • Неправильно валидируется пустой метод с комментарием #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
    Source code(tar.gz)
    Source code(zip)
    repo.zip(1.35 MB)
  • v0.2(Apr 15, 2022)

    Релиз поставляется в составе 1C:EDT 2021.3 - самостоятельная установка не требуется.

    Новые фичи

    • Функциональные опции, добавляемые 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)

    • Удаление аннотации строгой типизации из модуля
    • Открытие панели документирующего комментария
    • Удаление ключевого слова Экспорт для процедур или функций в модуле команды и в модуле формы

    Другие изменения

    Source code(tar.gz)
    Source code(zip)
    repo.zip(1.26 MB)
  • v0.2.beta(Feb 18, 2022)

    • Улучшена документация плагина. Чтобы открыть документацию нажмите Справка > Оглавление справки > 1C:Code style V8;
    • Добавлена контекстная команда включения строгой типизации по проекту целиком, по списку объектов, по списку файлов или каталогов;
    • Функция автоматической сортировки объектов конфигурации учитывает теперь объекты, находящиеся на полной поддержке. - Редактирование таких объектов невозможно, поэтому они не участвуют в сортировке;
    • Добавлены новые проверки:
      • 4 проверки объектов конфигурации (правила именования общих модулей);
      • 4 проверки встроенного языка;
      • 14 проверок документирующих комментариев;
    • Проверки строгой типизации были значительно улучшены. Например: учтены особенности для вызова COM-объектов, улучшена проверка добавления в типизированные коллекции и др.;
    • Добавлены 3 быстрых исправления для проверок, в тестовом режиме;
    • Исправлены ошибки и улучшено поведение других проверок.

    Полный список изменений можно посмотреть здесь включая предыдущие доработки версии 0.2.

    Благодарим всех контрибуторов проекта!

    Source code(tar.gz)
    Source code(zip)
    repo.zip(1.26 MB)
  • v0.1(Dec 23, 2021)

    Выпуск бета-версии для 1C:EDT 2021.2

    Огромная благодарность всем контрибуторам!

    Новые фичи

    • Автосортировка метаданных, сортировка объектов верхнего уровня по умолчанию, для подчиненных настраивается
    • Выбор подходящего тип общего модуля из списка при создании нового
    • Панель "Bsl Документирующий комментарий"
    • Автоматическое создание структуры модуля
    • Автоматическое включение строгой типизации модулей

    Новые проверки

    Добавлено 66 проверок:

    • Метаданные - 9 проверок
    • Формы - 2 проверки
    • Код модулей - 27 проверок
    • Запросы - 6 проверок
    • Права ролей - 22 проверки
    Source code(tar.gz)
    Source code(zip)
    repo.zip(920.56 KB)
Owner
null
Расширение для 1C:EDT, которое проверяет структурную целостность проектов "1С:Предприятия 8".

1С:EDT Project checks Расширение для 1C:EDT, которое проверяет структурную целостность проектов "1С:Предприятия 8". Проверки по стилю кодирования, лог

null 19 Nov 16, 2022
Обучающий репозиторий по Android разработке, в котором содержатся приложения, в каждом из которых проработана та или иная тема.

LearningApps Проект LearningApps содержит в себе различные приложения, в каждом из которых проработано несколько тем по Android разработке. Дополнител

Dmitry 26 Nov 22, 2022
API-автотесты для Reqres с использованием библиотеки REST Assured

API-автотесты для Reqres Покрытый функционал Разработаны автотесты на API. API Запросы GET, POST, PUT, PATCH и DELETE Отображение statusCode и body в

Karina Gordienko 2 Jan 31, 2022
DonationExecutor - плагин для Minecraft (Spigot/Paper)

DonationExecutor - плагин для Minecraft (Spigot/Paper) Плагин, который, получая информацию о новых донатах с Donation Alerts, автоматически генерирует

null 214 Dec 27, 2022