Что это?
Это инструмент анализа, который выполняет схожие функции с уже известными анализаторами, например, BSL Language Server и т.д.
Зачем?!
Я понимаю, что уже существует множество инструментов на разных языках, но интересно, что этот инструмент разработан на чистом 1С, в отличие от многих других инструментов. Это означает, что его использование будет проще и более понятным для программистов, даже для тех, кто не так хорошо понимает анализаторы.
Цель:
- Разработать удобный механизм для работы с файлами и исходным кодом на языке 1С как с данными.
- Разработать методы анализа (парсинга) исходного кода и файлов на языке 1С.
- Добавить много разных проверок, переводов, генераторов, парсеров и т.д.
Есть информация об инструменте?
Он проводит анализ внешней обработки, отчета, конфигурации и расширения конфигурации.
Варианты использования:
- Скачанное расширение ставится на отдельной (возможно пустой) базе данных. В проекте указывается путь к информационной базе, пользователь и пароль, путь к файлу *.cf, *.cfe, *.epf или *.erf и путь к выгрузке XML-файлов.
Многопоточный анализ доступен только в клиент-серверном варианте.
Плагины к каждому проекту цепляются отдельно.
Инструмент создан на основе radar и распространяется под лицензией MIT.
К сожалению, после того как репозиторию присвоен rip, поддерживать файл в актуальном состоянии так никто и не взялся. После внедрения анализатора конфигураций в работу, были добавлены новые парсеры, плагины, бэкенды и произведена доработка самого анализатора.
В инструмент анализатор включены 3 рукопашных парсера:
- Парсер внутреннего представления.
Внутреннее представление - это строка, которая формируется с использованием методов ЗначениеВСтрокуВнутр() или ЗначениеВФайл() или из содержимого некоторых текстовых файлов 1С, заключенных в фигурные скобки.
Доступен вывод: "Токены", "АСД (дерево)", "АСД (JSON)", "Плагины", "Замены", "Бэкенд", "Автотест", "Тестер". - Парсер встроенного языка.
Доступен вывод: "Токены", "АСД (дерево)", "АСД (JSON)", "Плагины", "Замены", "Бэкенд", "Автотест", "Тестер". - Парсер языка запросов.
Доступен вывод: "Токены", "АСД (дерево)", "АСД (JSON)", "Плагины", "Замены", "Бэкенд", "Автотест", "Тестер".
Выводы:
- Токены - выполняет лексический анализ текста и возвращает таблицу токенов.
- АСД (дерево) - разбирает исходный текст с результатом в виде АСД (дерево).
- АСД (JSON) - разбирает исходный текст с результатом в виде АСД (JSON).
- Плагины - регистрируют ошибки и/или замены и/или генерируют текст.
- Замены - заменяет участки текста в исходнике.
- Бэкенд - генерирует исходный текст по АСД или переводит исходный текст на другие языки.
- Автотест - генерирует исходный макет по АСД и сравнивает его с эталонным макетом для проверки.
- Тестер - демонстрирует прогон проверок исходного текста.
В разработке используется версия платформы 8.3.23.1739. Не рекомендуется использовать ниже указанной версии.
Как пользоваться инструментом?
- Подготовить заранее анализируемую внешнюю обработку, отчет, конфигурацию и расширение конфигурации, указав в диалоге файл *.epf, *.erf, *.cf или *.cfe.
- Выгрузить заранее анализируемую внешнюю обработку, отчет, конфигурацию или расширение конфигурации в файлы XML, указав в диалоге папку.
- Открыть конфигуратор на пустой базе.
- Загрузить скачанное расширение конфигурации из публикации и обновить конфигурацию базы данных.
- Запустить режим предприятия.
- На начальной странице нажать на команду "Проекты".
- Нажать на кнопку "Создать".
- В открывшейся форме проекта указать следующие поля:
- Наименование проекта - название продукта.
- Путь файла - путь к файлу из пункта 1.
- Путь выгрузки - путь к папке из пункта 2.
- Формат выгрузки - формат из пункта 2.
- Строка соединения - путь к БД.
- Пользователь - пользователь БД.
- Пароль - пароль пользователя БД. - Нажать на кнопки "Записать" и "Выполнить анализ". К проекту можно цеплять только плагины из папки "Парсер встроенного языка - Плагины - Генераторы ошибок".
- После выполнения анализа формируется документ "Анализы проектов".
- В разделе "Анализатор кода проектов" - "Отчеты" - "Тренд" можно посмотреть сколько ошибок было выявлено в процессе анализа внешней обработки, отчета, конфигурации или расширения конфигурации.
- В разделе "Анализатор кода проектов" - "Сервис" - "Навигатор" можно посмотреть список выявленных ошибок в файлах 1С.
- В разделе "Анализатор кода проектов" - "Сервис" - "Парсер внутреннего представления" можно пользоваться отдельным парсером внутреннего представления. К парсеру можно цеплять бэкенд из папки "Парсер внутреннего представления".
- В разделе "Анализатор кода проектов" - "Сервис" - "Парсер встроенного языка" можно пользоваться отдельным парсером встроенного языка. К парсеру можно цеплять плагины и бэкенды из папки "Парсер встроенного языка".
- В разделе "Анализатор кода проектов" - "Сервис" - "Парсер языка запросов" можно пользоваться отдельным парсером языка запросов.
- В разделе "Анализатор кода проектов" - "Сервис" - "Конструктор глобального окружения" можно пользоваться отдельным конструктором глобального окружения для генерации кода.
Что про скорость?
Скорость зависит от количества ядер процессоров сервера.
Отладка на сервере должна быть отключена, так как существенно увеличивает время анализа. Чтобы отключить отладку на сервере, нужно убрать в строке запуска службы агента сервера 1С параметр "-debug" и выполнить перезапуск службы.
Первый анализ выполняется довольно долго. Последующие быстро, так как проверяются только измененные модули.
Оперативной памяти в зависимости от варианта использования и анализируемой внешней обработки, отчета, конфигурации или расширения конфигурации требуется примерно от 0,2 до 2 гигабайт.
Замеры времени:
- Машина i7-10700k, SSD, включена отладка на сервере.
Продукт Размер файла CF Размер XML-файлов Максимум потоков Размер партии Первый анализ Последующий анализ ERP_2.5.14.59 1,12 ГБ 7,15 ГБ 4 50 001:54:56:611 000:03:37:754 ERP_2.5.14.59 1,12 ГБ 7,15 ГБ 8 50 001:20:08:493 000:03:39:641 ERP_2.5.14.59 1,12 ГБ 7,15 ГБ 8 100 001:14:07:049 000:05:33:250 ERP_2.5.14.59 1,12 ГБ 7,15 ГБ 16 50 001:19:46:362 000:04:19:019 - Машина: i5 8400, SSD samsung 970 evo, выключена отладка на сервере.
Продукт Максимум потоков Первый анализ Последующий анализ УХ_3.0 6 10 минут меньше минуты
В чём плюсы и минусы реализации инструмента на 1С?
Плюсы:
- Есть родной язык в платформе "1С:Предприятие";
- Есть выгрузка/загрузка файлов EPF, ERF, CF, CFE в/из XML;
- Есть метаданные файлов EPF, ERF, CF, CFE;
- Есть многопоточность;
- Есть вызов внешних обработок.
Минусы:
- Низкая производительность интерпретатора.
Есть сравнение инструментов? (приоритет 1с)
Какие есть проверки на 1С?
Источник | Описание | Анализ исходного кода | Анализ файлов | |||
Регистрация ошибок | Регистрация замен | JSON | Регистрация ошибок | |||
Парсер внутреннего представления |
Парсер регистрирует ошибки: |
+ | + | |||
Парсер встроенного языка | Парсер регистрирует ошибки: Ожидалось Ожидалась директива Неизвестная директива Ожидалась инструкция препроцессора Неизвестная инструкция препроцессора Не обнаружено объявление метода Ожидался операнд Ожидался конструктор Ожидалось не более двух аргументов Не обнаружено объявление идентификатора Ожидалось выражение Повторное объявление идентификатора Повторное объявление метода Ожидалась переменная Имя события указано неправильно Имя метода указано неправильно Ожидался символ препроцессора Ошибка в литерале даты Не удалось выполнить замену Ожидалось имя или путь Оператор Ждать разрешён использовать только в асинхронных методах Оператор Возврат разрешён использовать только в методах Объявление аннотации разрешено применять к методам |
+ | + | |||
Парсер языка запросов |
Парсер регистрирует ошибки: |
+ | + | |||
Парсер встроенного языка | Безумные многострочные литералы | Плагин обнаруживает безумные многострочные литералы. | + | + | ||
Бесполезный перебор коллекции | Плагин обнаруживает бесполезный перебор коллекции в теле цикла. | + | + | |||
Вложенный тернарный оператор | Плагин обнаруживает использование вложенных тернарных операторов. | + | + | |||
Вставка коллекции в саму себя | Плагин обнаруживает возникновение циклических ссылок. | + | + | |||
Выражение содержит много тернарных операторов | Плагин обнаруживает много тернарных операторов. | + | + | |||
Дублирование блоков кода | Плагин обнаруживает одинаковые или похожие блоки кода. | + | + | |||
Дублирование подвыражений кода | Плагин обнаруживает дублирование подвыражений кода. | + | + | |||
Дублирование тел методов | Плагин обнаруживает дублирование тел методов. | + | + | |||
Дублируется условие | Плагин обнаруживает дублирование условия. | + | + | |||
Дублирование блоков в ветвлениях и обработках исключений кода | Плагин обнаруживает дублирование блоков в ветвлениях и обработках исключений кода. |
+ | + | |||
Закомментированный код | Плагин обнаруживает закомментированный фрагмент кода. | + | + | |||
Замена неканоничных ключевых слов | Плагин заменяет неканоничные ключевые слова. | + | ||||
Замена устаревших шаблонов функцией платформы | Плагин заменяет устаревший шаблон функцией платформы. | + | + | + | ||
Запрос в цикле | Плагин обнаруживает запросы в циклах. | + | + | |||
Запуск внешних приложений | Плагин обнаруживает небезопасный запуск сторонних приложений. | + | + | |||
Использование если иначе если с константным выражением | Плагин обнаруживает использование конструкции Если ИначеЕсли с константным выражением. | + | + | |||
Использование конструкторов структур | Плагин обнаруживает использование конструкторов структур, регистрирует ошибку и замену в виде вставки ключей. | + | + | + | ||
Использование НСтр | Плагин обнаруживает использование НСтр. | + | + | |||
Использование СтрШаблон | Плагин обнаруживает некорректное использование СтрШаблон. | + | + | |||
Каноническое написание ключевых слов | Плагин обнаруживает неканоничное написание ключевого слова. | + | + | |||
Когнитивная сложность | Плагин обнаруживает когнитивную сложность. | + | + | |||
Код вне области | Плагин обнаруживает расположение кода вне области. | + | + | |||
Комментарий должен начинаться с пробела | Плагин обнаруживает пропущенный пробел в начале комментария. | + | + | |||
Конструкция если иначе если должна содержать иначе | Плагин обнаруживает наличие Иначе из условных операторов ИначеЕсли. | + | + | |||
Метод запрещен | Плагин обнаруживает использование методов ПолучитьФорму, ДанныеФормыВЗначение и Сообщить. | + | + | |||
Метод содержит много возвратов | Плагин обнаруживает много возвратов метода. | + | + | |||
Метод содержит много объявлений локальных переменных | Плагин обнаруживает много объявлений локальных переменных метода. | + | + | |||
Метод содержит много ожиданий | Плагин обнаруживает много ожиданий | + | + | |||
Много аннотаций директив компиляции | Плагин обнаруживает много аннотаций/директив компиляции. | + | + | |||
Много операторов в одной строке | Плагин обнаруживает много операторов в одной строке. | + | + | |||
Недостижимый код | Плагин обнаруживает недостижимый код. | + | + | |||
Неизвестный символ препроцессора | Плагин обнаруживает неизвестный символ препроцессора. | + | + | |||
Неиспользуемая переменная | Плагин обнаруживает использование переменных и параметров. | + | + | |||
Некорректное использование функции продолжить вызов | Плагин обнаруживает некорректное использование функции ПродолжитьВызов. | + | + | |||
Нерекомендуемый атрибут аннотации | Плагин обнаруживает нерекомендуемый атрибут аннотации. | + | + | |||
Не определена метка переход на метку | Плагин обнаруживает неопределенную метку или переход на метку в методе или теле модуля. |
+ | + | |||
Ограничение на длину строки | Плагин обнаруживает длину строки более 120 символов. | + | + | |||
Ограничение на количество параметров метода | Плагин обнаруживает превышение количества параметров метода. | + | + | |||
Опасное обращение по индексу | Плагин обнаруживает опасное обращение по индексу. | + | + | |||
Оператор вызвать исключение без аргументов вне исключения попытки | Плагин обнаруживает оператор ВызватьИсключение без аргументов вне исключения попытки. | + | + | |||
Оператор перейти запрещен | Плагин обнаруживает использование оператора Перейти. | + | + | |||
Операторы прервать продолжить вне цикла | Плагин обнаруживает операторы Продолжить и Прервать вне цикла. | + | + | |||
Ошибочный замыкающий комментарий | Плагин обнаруживает и актуализирует замыкающие комментарии в окончаниях методов и областей. | + | + | + | ||
Переименование переменных | Плагин выполняет переименование переменных. При возникновении конфликтов регистрирует ошибку. | + | + | + | + | |
Повторяющиеся разделы модуля | Плагин обнаруживает повторяющиеся разделы модуля. | + | + | |||
Подряд идущие пустые строки | Плагин обнаруживает пустые строки. | + | + | |||
Порядок параметров метода | Плагин обнаруживает расположение необязательных параметров метода перед обязательными. | + | + | |||
Пропущенные точки с запятой | Плагин обнаруживает пропущенные точки с запятой. | + | + | |||
Пропущен последний параметр | Плагин обнаруживает отсутствие последнего параметра. | + | + | |||
Пропущено описание методов | Плагин обнаруживает пропущенные описания экспортных методов. | + | + | |||
Пропущено описание переменных модуля | Плагин обнаруживает пропущенные описания переменных модуля. | + | + | |||
Пустой блок кода | Плагин обнаруживает пустые блоки кода. | + | + | |||
Пустой оператор | Плагин обнаруживает пустой оператор, состоящий только из точки с запятой ";". | + | + | |||
Расстановка пропущенных точек с запятой | Плагин расставляет пропущенные точки с запятой. | + | ||||
Свойство ЭтаФорма запрещено | Плагин обнаруживает использование устаревшего свойства ЭтаФорма. | + | + | |||
Функция должна содержать возврат | Плагин обнаруживает наличие возврата из функции. | + | + | |||
Хранение сетевых адресов в коде | Плагин обнаруживает небезопасное хранение сетевых адресов в коде. | + | + | |||
Цикломатическая сложность | Плагин обнаруживает цикломатическую сложность. | + | + | |||
Чрезмерный уровень вложенности конструкций | Плагин обнаруживает много вложенных конструкций. | + | + | |||
Парсер языка запросов | Многострочный литерал в запросе | Плагин обнаруживает многострочный литерал в запросе. | + | + | ||
Пустой запрос | Плагин обнаруживает пустой запрос, состоящий только из точки с запятой ";". |
+ | + |
Кроме проверок, что ещё имеется?
Источник | Описание | JSON | |
Парсер внутреннего представления | Генератор исходного внутреннего представления по АСД | Бэкенд генерирует исходное внутреннее представление по АСД. | |
Парсер встроенного языка | Визажист | Плагин анализирует АСД исходного кода парсера и возвращает код в формате html. | |
Генератор документации для парсера встроенного языка | Бэкенд анализирует АСД исходного кода парсера встроенного языка и возвращает техническую документацию по парсеру встроенного языка в формате html. | ||
Генератор исходного кода по АСД | Бэкенд генерирует исходный код по АСД. | ||
Перевод исходного кода в чистый код | Бэкенд переводит исходный код в чистый код. | ||
Перевод исходного кода на язык 1с исполнитель | Бэкенд переводит исходный код на язык 1С:Исполнитель с незначительными изменениями операторов, выражений и т.д. | ||
Перевод исходного кода на язык python | Бэкенд переводит исходный код на язык Python с незначительными изменениями операторов, выражений и т.д. | ||
Перевод исходного кода на язык power shell | Бэкенд переводит исходный код на язык PowerShell с незначительными изменениями операторов, выражений и т.д. | ||
Перевод исходного кода на язык cи плюс плюс | Бэкенд переводит исходный код на язык С++ с незначительными изменениями операторов, выражений и т.д. | ||
Рекурсивный подсчет серверных вызовов в модулях форм | Плагин рекурсивно подсчитывает серверные вызовы в модулях форм и выводит их в виде текста. |
Какие ближайшие планы?
- Улучшение и доработка инструмента.
- Исправление ошибок.
Какие планы на будущее?
- Выполнение автоматизированных переименований и переводов;
- Генерация документации по исходному коду;
- Модификация исходного кода путем замен/вставки/удаления фрагментов кода;
- Модификация файлов путем замен/вставки/удаления фрагментов кода;
- Обфускация исходного кода;
- Перевод исходного кода на другие языки программирования;
- Поиск ошибок в исходном коде;
- Подготовка исходного кода к публикации (генерация html);
- Проверка версии СЛК;
- Проверка запросов (построителя запросов);
- Проверка исходного кода на соответствие стандартам как внешним, так и внутренним;
- Проверка исходного кода на соответствие требованиям безопасности;
- Проверка опечаток (орфографии);
- Проверка отчетов (построителя отчетов);
- Проверка оформления исходного кода;
- Проверка поставки модулей без исходных текстов;
- Проверка прав доступа;
- Проверка СКД;
- Проверка справок;
- Продвинутый автоматизированный поиск по исходному коду;
- Сбор статистики по исходному коду;
- Форматирование исходного кода.
Документация?
Источники и литература?
Вскрытие статического анализа кода проектов 1С
Cтатический анализ исходного кода
Что нового добавили в инструмент?
- Добавлены файлы в набор внешних файлов:
- "ИспользованиеСтрШаблон" (Парсер встроенного языка - Плагины - Генераторы ошибок).
- "МногострочныйЛитералВЗапросе" (Парсер языка запросов - Плагины - Генераторы ошибок).
- "ПустойЗапрос" (Парсер языка запросов - Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Теперь обнаруживает сразу несколько подряд комментариев, начинающихся без пробела, в плагине "КомментарийДолженНачинатьсяСПробела".
- Теперь обнаруживает сразу несколько подряд строк, в которых количество символов превышает 120, в плагине "ОграничениеНаДлинуСтроки".
- Скорректировано выделение пустых строк в начале и конце текста в плагине "ПодрядИдущиеПустыеСтроки". & Вместо("ТестА") & НаКлиенте Процедура Тест() КонецПроцедуры
Исправлена ошибка при разборе кода:
- Исправлена ошибка при разборе запросов:
Выбрать 1;;;Выбрать 4
Дата выпуска: 11.06.2024
- Теперь при определении токенов и узлов учитываются позиции знаков:
- точки с запятой (операторы, переменные, запросы);
- прямые слэши (комментарии);
- амперсанды (методы, переменные). - Добавлены файлы в набор внешних файлов:
- "ОграничениеНаДлинуСтроки" (Парсер встроенного языка - Плагины - Генераторы ошибок).
- "ПропущеноОписаниеМетодов" (Парсер встроенного языка - Плагины - Генераторы ошибок).
- "ПропущеноОписаниеПеременныхМодуля" (Парсер встроенного языка - Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Добавлена проверка наличия обязательных языков в плагин "ИспользованиеНСтр".
- Теперь удаляет лишние выражения при преобразовании условных и тернарных операторов в чистый код в бэкенде ПереводИсходногоКодаВЧистыйКод.
Дата выпуска: 31.05.2024
- Добавлены выводы "Плагины", "Замены", "Бэкенд" и "Автотест" в парсер языка запросов.
- Добавлены все функции языка запросов в конструктор глобального окружения.
Дата выпуска: 07.05.2024
- Добавлены выводы "АСД (дерево)" и "АСД (JSON)" в парсер языка запросов.
- Добавлены подписки для поддержки аннотаций и директив компиляции в парсер встроенного языка.
- Немного изменён парсер внутреннего представления.
- Изменения в наборе внешних файлов:
- Немного изменены файлы "ЗаменаНеканоничныхКлючевыхСлов" и "КаноническоеНаписаниеКлючевыхСлов".
Дата выпуска: 15.04.2024
- Добавлены выводы "Плагины", "Замены", "Бэкенд" и "Автотест" в парсер внутреннего представления.
- Добавлены подписки в парсер внутреннего представления.
- Добавлены файлы в набор внешних файлов:
- "ГенераторИсходногоВнутреннегоПредставленияПоАСД" (Парсер внутреннего представления - Бэкенды).
- "ЧрезмерныйУровеньВложенностиКонструкций" (Парсер встроенного языка - Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Добавлена проверка каноничности символов препроцессора в файл "КаноническоеНаписаниеКлючевыхСлов".
- Добавлена замена неканоничных символов препроцессора в файл "ЗаменаНеканоничныхКлючевыхСлов".
- Немного изменён файл "МногоОператоровВОднойСтроке".
- Переименован файл "ГенераторДокументацииДляПарсера" в "ГенераторДокументацииДляПарсераВстроенногоЯзыка".
Дата выпуска: 27.03.2024
- Добавлены выводы "АСД (дерево)" и "АСД (JSON)" в парсер внутреннего представления.
- Добавлены подписки для поддержки Ждать в парсер встроенного языка.
- Добавлены файлы в набор внешних файлов:
- "МетодСодержитМногоОжиданий" (Плагины - Генераторы ошибок);
- "НеизвестныйСимволПрепроцессора" (Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Переименован плагин "ДублированиеБлоковВВеткахВетвленияКода" в "ДублированиеБлоковВВетвленияхИОбработкахИсключенийКода".
Дата выпуска: 19.03.2024
- Добавлен вывод "Тестер" в парсер внутреннего представления.
- Добавлены файлы в набор внешних файлов:
- "ПереводИсходногоКодаНаЯзыкPython" (Бэкенды);
- "ОпасноеОбращениеПоИндексу" (Плагины - Генераторы ошибок);
- "НекорректноеИспользованиеФункцииПродолжитьВызов" (Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Добавлена проверка дублирования блоков в ветке условного оператора в плагин "ДублированиеБлоковВВеткахВетвленияКода".
- Добавлена поддержка Ждать в бэкенд "ГенераторИсходногоКодаПоАСД".
- Добавлена поддержка Ждать в бэкенд "ПереводИсходногоКодаВЧистыйКод".
- Добавлена поддержка Ждать в бэкенд "ПереводИсходногоКодаНаЯзык1СИсполнитель".
- Добавлена поддержка Ждать в бэкенд "ПереводИсходногоКодаНаЯзыкCиПлюсПлюс".
- Добавлена поддержка Ждать в бэкенд "ПереводИсходногоКодаНаЯзыкPowerShell".
Дата выпуска: 10.03.2024
- Добавлен вывод "Тестер" в парсер языка запросов.
- Добавлены файлы в набор внешних файлов:
- "ПереводИсходногоКодаВЧистыйКод" (Бэкенды);
- "ДублированиеТелМетодов" (Плагины - Генераторы ошибок);
- "ХранениеСетевыхАдресовВКоде" (Плагины - Генераторы ошибок). - Теперь парсер регистрирует ошибки, связанные с использованием объявления аннотации в переменных модуля.
- Изменения в наборе внешних файлов:
- Переименован бэкенд "ГенераторКода1СПредприятиеПоАСД" в "ГенераторИсходногоКодаПоАСД".
- Переименован бэкенд "ГенераторКода1СИсполнительПоАСД" в "ПереводИсходногоКодаНаЯзык1СИсполнитель".
- Переименован бэкенд "ГенераторКодаPowerShellПоАСД" в "ПереводИсходногоКодаНаЯзыкPowerShell".
- Переименован бэкенд "ГенераторКодаCиПлюсПлюсПоАСД" в "ПереводИсходногоКодаНаЯзыкCиПлюсПлюс".
- Переименован плагин "ДублируютсяВыраженияТернарногоОператора" в "ДублированиеБлоковВВеткахВетвленияКода".
- Доработано выделение позиций от трёх и более многострочных литералов в плагине "БезумныеМногострочныеЛитералы".
- Добавлен экспортный метод в бэкенд "ПереводИсходногоКодаНаЯзык1СИсполнитель".
- Добавлено объявление любого типа возвращаемого значения в бэкенд "ПереводИсходногоКодаНаЯзык1СИсполнитель".
- Доработано объявление типов параметров в бэкенде "ПереводИсходногоКодаНаЯзык1СИсполнитель".
- Преобразовано выражение "Новый" в нижний регистр в бэкенде "ПереводИсходногоКодаНаЯзык1СИсполнитель".
- Добавлена проверка дублирования блоков в ветке оператора исключения в плагин "ДублированиеБлоковВВеткахВетвленияКода".
Дата выпуска: 28.02.2024
- Добавлен вывод "Тестер" в парсер встроенного языка.
- Добавлены файлы в набор внешних файлов:
- "ГенераторКодаCиПлюсПлюсПоАСД" (Бэкенды);
- "ДублированиеПодвыраженийКода" (Плагины - Генераторы ошибок);
- "ЗапускВнешнихПриложений" (Плагины - Генераторы ошибок). - Теперь парсер регистрирует ошибки, связанные с использованием оператора "Возврат" в модуле без методов.
- Исправлена ошибка при разборе исходного кода:
Перем Тест; Возврат Тест;
Дата выпуска: 20.02.2024
- Добавлен парсер внутреннего представления в анализатор. Теперь доступен вывод "Токены".
- Добавлены файлы в набор внешних файлов:
- "ГенераторКодаShellPowerПоАСД" (Бэкенды);
- "НедостижимыйКод" (Плагины - Генераторы ошибок);
- "НеОпределенаМеткаПереходНаМетку" (Плагины - Генераторы ошибок).
Дата выпуска: 13.02.2024
- Добавлена возможность генерировать код с помощью конструктора глобального окружения. Работает как в файловом, так и в серверном режиме.
- Добавлены файлы в набор внешних файлов:
- "ГенераторКода1CИсполнительПоАСД" (Бэкенды);
- "ЗаменаУстаревшихШаблоновФункциейПлатформы" (Плагины - Генераторы ошибок и замен);
- "ПовторяющиесяРазделыМодуля" (Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Переименован бэкенд "ГенераторКодаПоАСД" в "ГенераторКода1CПредприятиеПоАСД".
Дата выпуска: 01.02.2024
- Добавлен вывод "Автотест" в парсер встроенного языка.
- Теперь при определении токена "Начало текста" учитывается первая позиция в первой строке исходника.
- Добавлены файлы в набор внешних файлов:
- "ГенераторКодаПоАСД" (Бэкенды);
- "ДублируютсяВыраженияТернарногоОператора" (Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Переименован плагин "ОператорВызватьИсключениеВнеИсключенияПопытки" в "ОператорВызватьИсключениеБезАргументовВнеИсключенияПопытки". - Исправлена ошибка при разборе исходного кода:
ВызватьИсключение("Ошибка на клиенте с категорией", КатегорияОшибки.ОшибкаКонфигурации, "error.client.config", "error.client.config additional info");
Дата выпуска: 11.01.2024
- Добавлена возможность указать путь параметров плагинов (JSON) в проекте.
- Добавлены файлы в набор внешних файлов:
- "МетодСодержитМногоВозвратов" (Плагины - Генераторы ошибок);
- "МногоАннотацийДирективКомпиляции" (Плагины - Генераторы ошибок);
- "ОператорВызватьИсключениеВнеИсключенияПопытки" (Плагины - Генераторы ошибок);
- "ОператорыПрерватьПродолжитьВнеЦикла" (Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Переименован плагин "ДублируетсяОператорПрисваивания" в "ДублированиеБлоковКода".
Дата выпуска: 25.12.2023.
- Добавлена поддержка атрибута аннотации в парсер встроенного языка.
- Теперь парсер регистрирует ошибки, связанные с использованием оператора "Ждать" в контексте, отличном от асинхронных методов.
- Добавлен файл в набор внешних файлов:
- "НерекомендуемыйАтрибутАннотации" (Плагины - Генераторы ошибок). - Исправлена ошибка при разборе исходного кода:
СписокФайлов = Ждать НайтиФайлыАсинх(Ждать КаталогВременныхФайловАсинх(), МаскаВсеФайлы(), Ложь);
Дата выпуска: 15.12.2023.
- Добавлена возможность указать путь параметров бэкенда (JSON) в парсере встроенного языка.
- Добавлены файлы в набор внешних файлов:
- "МногоОператоровВОднойСтроке" (Плагины - Генераторы ошибок);
- "ЦикломатическаяСложность" (Плагины - Генераторы ошибок). - Изменения в наборе внешних файлов:
- Переименован плагин "ДублируетсяТочкаСЗапятой" в "ПустойОператор".
- Переименован плагин "ВыражениеСодержитНесколькоТернарныхОператоров" в "ВыражениеСодержитМногоТернарныхОператоров".
- Переименован плагин "ОбъявлениеМетодаСодержитНесколькоСписковЛокальныхПеременных" в "МетодСодержитМногоОбъявленийЛокальныхПеременных".
Дата выпуска: 08.12.2023.
- Добавлен вывод "АСД(JSON)" в парсер встроенного языка.
- Добавлены файлы в набор внешних файлов:
- "ОграничениеНаКоличествоПараметровМетода" (Плагины - Генераторы ошибок);
- "ПорядокПараметровМетода" (Плагины - Генераторы ошибок).
Дата выпуска: 01.12.2023.
- Добавлена возможность анализировать внешнее расширение конфигурации *.cfe в проекте.
- Добавлены файлы в набор внешних файлов:
- "БезумныеМногострочныеЛитералы" (Плагины - Генераторы ошибок);
- "ИспользованиеЕслиИначеЕслиСКонстантнымВыражением" (Плагины - Генераторы ошибок).
Дата выпуска: 23.11.2023.
- Добавлена возможность анализировать внешнюю обработку *.epf и внешний отчет *.erf в проекте.
- Добавлена возможность прикреплять несколько плагинов к парсеру встроенного языка за один раз.
- Добавлен файл в набор внешних файлов:
- "КонструкцияЕслиИначеЕслиДолжнаСодержатьИначе" (Плагины - Генераторы ошибок).
Дата выпуска: 16.11.2023.
- Добавлена поддержка Асинх / Ждать в парсер встроенного языка.
- Добавлена возможность анализировать внешнюю конфигурацию *.cf в проекте.
- Добавлена возможность выгрузить конфигурацию из базы в файл(ы) через командную строку.
- Добавлена возможность проверять все модули, а не только измененные для последующего анализа.
- Добавлена возможность прикреплять несколько плагинов к проекту за один раз.
- Добавлен парсер языка запросов платформы 1С:Предприятие 8 в анализатор. Теперь доступен вывод "Токены".
- Добавлены файлы в набор внешних файлов:
- "ДублируетсяОператорПрисваивания" (Плагины - Генераторы ошибок);
- "ДублируетсяТочкаСЗапятой" (Плагины - Генераторы ошибок);
- "ЗакомментированныйКод" (Плагины - Генераторы ошибок);
- "КодВнеОбласти" (Плагины - Генераторы ошибок);
- "КомментарийДолженНачинатьсяСПробела" (Плагины - Генераторы ошибок);
- "ПодрядИдущиеПустыеСтроки" (Плагины - Генераторы ошибок);
- "ПустойБлокКода" (Плагины - Генераторы ошибок);
- "ОбъявлениеМетодаСодержитНесколькоСписковЛокальныхПеременных" (Плагины - Генераторы ошибок). - Упразднены некоторые функции.
- Исправлена ошибка чтения XML-файлов.
Дата выпуска: 03.11.2023.
- Добавлен анализатор и набор внешних файлов в инструмент.
Дата выпуска: 01.01.2023.
Не стесняйтесь сообщать о найденных опечатках!
Учтены замечания:
- 03.11.23 Поправлено количество проверок в turboconf.
- 06.11.23 Добавлен список проверок.
- 23.11.23 Повсеместно переименовано слово "бакенд" в "бэкенд".
- 15.01.24 Добавлена проверка ИР и ИР адаптер для turboconf.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.14.59