Как управлять качеством кода 1С, используя платформу SonarQube

Публикация № 1175305

Разработка - Инструментарий разработчика

При быстром росте функциональности проводить визуальный Code-Review для обнаружения некачественного кода проблематично. О том, как автоматизировать проверку качества кода 1С с помощью платформы SonarQube на конференции Infostart Event 2019 Inception рассказал ведущий разработчик компании «Командор» Олег Тымко.

Приветствую всех на конференции Infostart Event Inception. Зовут меня Тымко Олег, я работаю ведущим разработчиком в торговой сети «Командор» города Красноярска. Сегодня я хочу рассказать вам, как у нас в организации внедрялась непрерывная проверка качества кода на базе платформы SonarQube, с какими проблемами мы столкнулись, какое решение было выработано, и что в итоге у нас получилось. Но обо всем по порядку.

 

Как уследить за качеством при быстром росте функциональности?

У нас, как и в любых других организациях, для автоматизации бухгалтерского и управленческого учета, расчета зарплаты используются программные решения на базе 1С:Предприятие. Бизнес требует быстро и качественно внедрять новую функциональность в продуктив. С увеличением функциональности растет и размер проектов 1С. Соответственно, и количество кода в этих проектах. И становится актуальным следить за качеством кода, так как каждая ошибка чревата большими затратами бизнеса на ее исправление.

 

 

На слайде мы видим облако используемых решений на базе 1С:Предприятие. Их настолько много, что трудно контролировать на должном уровне качество в каждом из проектов.

 

 

С какими проблемами мы столкнулись до внедрения этого всего?

  • Первая проблема – при большом количестве разработок проблематично проводить визуальный Code-Review. Проблема ручного Code-Review не только в том, что это дорого и долго для бизнеса, но и в том, что программистам просто это делать лениво, и это их сильно утомляет. И, соответственно, их КПД падает.

  • Вторая проблема – это ошибки, о которых становится известно только на продакшене. Ладно, если это какая-то мелкая ошибка, которую быстро поправили – она никому ничего плохого не сделала. Но если эта ошибка останавливает многомиллионный оборот организации, бизнес терпит убытки, бизнес недоволен. 

  • Третья проблема в том, что в принципе нет автоматизированного контроля внутренних стандартов разработки – только с помощью Code-Review. 

  • И последнее, но не менее важное – это большие затраты на принятие работ от внешних разработчиков. 

С этим нужно было что-то делать, поэтому мы решили внедрить непрерывную проверку качества кода на базе платформы SonarQube.

 

 

В основу нашего решения легло использование SonarQube в связке с Jenkins и 1С. Об этом я сейчас все и расскажу.

 

Общая схема решения

SonarQube – это программное решение, которое позволяет непрерывно проверять качество кода. В платформе поддерживается более 27 языков программирования. С помощью плагина поддерживается и язык 1С.

 

 

Хочу рассказать о том, какое решение было выработано у нас и как всем этим пользоваться:

  • Разработчики ведут разработку в хранилище 1С, помещают туда свои изменения по каким-то задачам, по проектам и т.п.

  • Затем на стороне Jenkins (это такой сервер сборок) выполняется работа (Job), которая экспортирует историю хранилища 1С с помощью консольной утилиты GitSync в локальный Git-репозиторий.

  • Затем из локального Git-репозитория изменения отправляются в удаленный Git-репозиторий GitLab, который размещен у нас внутри организации.

 

 

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

 

 

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

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

  • Также программисты сами работают с SonarQube – смотрят замечания по себе, работают над ними, тем самым, уменьшая объем работы ведущим разработчикам.

Такой процесс настроен у нас во всех основных проектах 1С.

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

 

 

Снова вернусь к самому SonarQube. А есть ли аналоги SonarQube в принципе на рынке? Да, есть – например, Solar или App scanner. Но не понятно, какую функциональность они содержат у себя на борту и сколько они будут стоить для бизнеса. 

Также есть решение на базе 1С:Предприятие – называется «1С:Автоматизированная проверка конфигураций» (в дальнейшем, я буду ее называть сокращенно 1С:АПК). Если сравнивать 1С:АПК с SonarQube, то у второго более простой и понятный интерфейс, удобный фильтр по замечаниям, есть оценка текущего состояния проекта, есть динамика изменения показателей проекта.

Если говорить о функциональности SonarQube в общем, то можно отметить следующее:

  • У SonarQube есть бесплатная поддержка кода 1С с помощью плагина SonarQube BSL Community

  • Сама платформа SonarQube имеет бесплатную версию Community Edition – не нужно сразу покупать Enterprise или Develop-версию. 

  • Есть возможность расширения функциональности с помощью плагинов. 

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

  • И последнее, но не менее важное – SonarQube можно развернуть у себя на сервере, внутри.

В итоге получается, что мы можем развернуть у себя SonarQube и провести анализ проектов 1С, ничего не покупая из платного программного обеспечения. Только обеспечить сервер под развертку, арендовать его или купить.

 

Первый анализ в SonarQube

 

 

Что же мы увидели после первого анализа в коде проекта?

Конечно же, кучу ошибок, которые сначала кажутся необъятными. И что же с ними делать?

Ответ – ничего. Мы для себя решили, что сначала работаем над новыми замечаниями. И только потом, когда будет время, когда бизнесу будет незатратно, начинаем работать над существующими – их анализировать и исправлять.

 

Обзор проектов в SonarQube

 

 

Посмотрим, как выглядит интерфейс SonarQube. На главной странице у нас обзор проектов с какими-то краткими показателями. Но лучше посмотреть подробно, как выглядит сам проект.

 

 

На слайде показана главная страница проекта. Из нее можно увидеть какие-то основные показатели, состояние прохождения порога качества и тренд изменения метрик проекта 1С – какие замечания, проблемы у нас появились в новом коде. Обо всех этих показателях я сейчас расскажу подробнее.

 

Замечания по проекту. Классификация ошибок в коде.

 

 

Проблемы в коде бывают следующие:

  • Ошибки (критические проблемы в коде). В новом коде желательно их сразу исправлять – не нужно их оставлять на потом.

  • Уязвимости – они так же критичны, как и ошибки. Они являются отражением проблем безопасности в коде. И с помощью них можно нанести непоправимый вред информационной базе.

  • Дефекты кода – это «код с запашком». Они менее критичны, чем ошибки, но влияют на сопровождаемость и простоту доработки конфигурации.

  • Дублирование кода – менее критично, чем дефекты кода. Но также влияет на простоту доработки. По сути, является отражением меры копипаста в проекте.

На слайде изображен Барт – он обещал больше не писать плохой код, но продолжает это делать. У него куча ошибок, и с помощью платформы SonarQube мы можем их выявить. 

  • он не канонически пишет ключевые слова;

  • переменные называет одним символом;

  • объявляет константу в цикле;

  • неправильно добавляет в массив;

  • а потом неправильно вызывает элемент массива. 

То есть, надо Барта постоянно контролировать, либо вообще увольнять.

 

 

Далее – в самом проекте можно посмотреть список замечаний по проекту. SonarQube предоставляет гибкий отбор по замечаниям. Мы у себя, в основном, пользуемся отборами:

  • по типу замечания;

  • по дате его создания – смотрим, какие у нас были замечания за период;

  • по назначенному ответственному – кто этим замечанием должен заниматься и занимается;

  • и по конкретному правилу.

 

 

Как в принципе замечание выглядит?

Из него можно понять:

  • местоположение – модуль, где это замечание сработало, строчка кода, на которой оно сработало;

  • суть самого замечания – его заголовок (в данном случае «Отсутствует код в блоке «Исключение»);

  • тип;

  • статус;

  • дату создания;

  • кто ответственный за это замечание (кому оно назначено);

  • можно проставить теги, если они ведутся. В данном случае, если по тегу классифицируются какие-то проблемы, можно, допустим, написать, что это – Bad Practice. 

 

 

В контексте кода замечание выглядит так, как на слайде.

Мы видим блок «Попытка...Исключение». Видим, что блок исключения пустой. В данном случае это идеальный код, который всегда выполняется, и о проблемах с ним мы узнаем, только когда уже «припечет». В данном случае нужно либо писать сообщение что что-то пошло не так в журнал регистрации, либо выкидывать сообщения в пользовательский режим, либо вообще выкинуть исключение выше и прекратить выполнение алгоритма – не нужен нам такой код.

 

Профили качества

 

 

В SonarQube есть определенные сущности. Первая сущность называется профиль качества. Они нужны, чтобы группировать правила проверки и делать какие-то конкретные настройки по этим правилам. Для себя у нас создано два профиля качества:

  • общий профиль для проектов 1С в целом;

  • профиль конкретно под OneScript.

 

Пороги качества

 

 

Еще одна вещь в SonarQube – это пороги качества. Они нужны, чтобы установить границы уведомления о непрохождении порогов качества по каким-то выбранным критериям. Для одного из наших проектов на команду 5-8 человек были установлены следующие условия порога – мы за период 21 день не должны превышать:

  • больше 25 ошибок;

  • больше 300 замечаний;

  • больше 10% дублирования в коде;

  • и не больше нуля уязвимостей. 

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

 

Некоторые диагностики. Магические числа

 

 

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

А что такое 7*60*60? Или 55*60? С первого взгляда это же не понятно? А когда опускаешься до контекста, то начинаешь понимать. Первое – это 7 часов в секундах. А второе – 55 минут в секундах. Это и называется магическими числами. 

Конечно, такое написание кода усложняет дальнейшее сопровождение и доработку. Конечно, круто, что программист смог уложить все в одной строчке, но главное при написании хорошего кода – это не писать его сложно, а писать его настолько просто, чтобы программист, не погруженный в контекст, мог понять, что к чему. 

У правила есть исключения, на которые эта диагностика не реагирует – это 0, 1, -1 и 86400 (1 день в секундах). 

 

 

Следующее правило – параметры при объявлении структуры. В упрощенном виде это правило гласит: «Не рекомендуется объявлять структуры с параметрами в параметрах других структур». 

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

Это – плохочитаемый и плохоподдерживаемый код. При любом изменении в параметрах доработка такого кода почти всегда чревата ошибками. 

Правильно все структуры разбить на отдельные переменные. И множество параметров добавлять через «Вставить».

Как сказал один программист: «У меня с таким кодом вообще никогда проблем не было, я не первый день на родео и это далеко не первое мое родео». А нам такого родео не надо. С этим кодом можно обрести очень много проблем – что в разработке, что в продакшене.

 

Рассылка на почту

 

 

Перейдем снова к SonarQube – вот так выглядит уведомление, которое он присылает на почту. В данном случае, по уведомлению можно понять:

  • что это за проект, его версию;

  • что в данном случае случилось – появилось какое-то новое замечание 

  • и быструю ссылку, чтобы перейти к этому замечанию в веб-интерфейсе. 

Вообще у SonarQube есть несколько шаблонов рассылок. 

  • Одну вы видите на экране – это уведомление о новых замечаниях и изменении статуса предыдущих, уже существующих.

  • И вторая – это уведомление о непрохождении порога качества (либо прохождении).

 

Результат

Хочу подвести промежуточные итоги. Что мы получили после внедрения такого контроля?

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

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

 

Где взять диагностики кода?

 

 

В ходе использования платформы SonarQube у нас возникла необходимость внедрить больше правил. На основе анализа существующих решений были выявлены следующие источники – это:

  • 1С:АПК;

  • Проект BSL Language Server;

  • 1C:EDT, о которой я сейчас расскажу.

 

EDT

 

 

1С:EDT – это такой новый конфигуратор 1С. Он разрабатывается на базе IDE Eclipse. С помощью утилиты ring можно выгрузить список замечаний в произвольный формат csv. На борту имеется примерно 87 диагностик, которые частично пересекаются с основным плагином для SonarQube. Этот результат можно сконвертировать в понятный для SonarQube формат – generic issue с помощью проекта с GitHub, который называется edt-export (https://github.com/Stepa86/edt-export-bugs).

 

1С:АПК

 

 

Следующий источник – это 1С:АПК. Его разработала компания ИжТиСи в 2009 году. Решение позволяет в автоматическом режиме проверять конфигурации на соответствие стандартам разработки 1С и 1С:Совместимо.

В 1С:АПК есть настройка проверяемых требований. Мы у себя проверяем группу требований – это:

  • платформенные проверки конфигурации;

  • контроль разработки управляемых интерфейсов;

  • особенности кросс-платформенной разработки – мы используем решения не только на Windows, но и на Linux, поэтому нам важно проверять эти моменты;

  • также обработка и модификация данных – управляемые блокировки, использование транзакций и т.п.;

  • и последнее – это оформление модулей. В них входит структура модулей, описание процедур и функций и т.п.

 

 

Вот так у нас в SonarQube выглядят замечания, выгруженные из 1С:АПК. Для выгрузки замечаний из 1С:АПК в понятном SonarQube формате generic issue используется проект acc-export (https://github.com/otymko/acc-export).

Если мы вели проект в Git, мы можем сразу определить ответственных по замечаниям. 

Также можно выгрузить из 1С:АПК описание правил проверок в формате json и загрузить их в SonarQube. И, не открывая 1С:АПК, видеть описание проблем со ссылками на стандарты в ИТС. 

По каждому из правил можно предварительно оценить объем технического долга – сколько времени потребуется на исправление, и после выгрузки замечаний из 1С:АПК в SonarQube все это посчитать.

 

BSL Language Server

 

 

И последний проект – это BSL Language Server. Проверки для бесплатного плагина, который мы использовали в SonarQube, берутся из этого проекта.

Это – проект реализации Language Server Protocol для языка 1С. Чтобы увеличить количество диагностик в этом проекте, нужно участвовать в его развитии, писать на Java, на Kotlin. Понятно, что не каждая команда это себе может позволить, но, в принципе, какие-то базовые проверки пишутся не так сложно. 

На экране – немного кода Java. Что из него можно понять? 

  • у нас есть какое-то описание диагностики – ее тип, важность, время на исправление;

  • и есть какой-то класс с переопределенным методом, который посещает список параметров метода visitParamList. 

Диагностика на слайде – это контроль порядка параметров в методе. Проверка срабатывает, если хотя бы один обязательный параметр идет после необязательного. Если в нашем коде такая ошибка встречается, мы увидим это замечание в SonarQube.

 

Изменение показателей проектов

 

 

Подведу финальный итог. Что же нам удалось добиться всем этим внедрением?

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

  • Разработчики теперь могут сами смотреть свои замечания и прорабатывать критические ошибки до внедрения в продакшен.

  • Появилась самообучаемость у младших разработчиков – их стиль кода и качество написания кода улучшились без какого-то особого вмешательства ведущего разработчика. 

  • Также с помощью SonarQube где-то на 20% быстрее стал ревью кода. 

  • Теперь мы можем смотреть динамику по проектам и использовать эту информацию в каких-то управленческих решениях. 

  • Итого, в краткосрочной перспективе, за 2-3 месяца нам удалось добиться прекращения увеличения замечаний по проектам, и начать работу над существующими.

 

 

Я хочу показать вам пару графиков – показателей одного из проектов.

Первый график – у нас анализ проводился с апреля по сентябрь 2019 года. На графике мы видим, сколько у нас в проекте было дублирующихся участков с копипастом. Начали мы примерно с 18 тысяч, сейчас примерно 7 тысяч. За это время нам удалось добиться уменьшения дублирования кода в 2 раза, и это очень хорошо. Уменьшили копипаст – проект стал более качественным.

 

 

Второй график – это изменение количества ошибок. Изначально, до внедрения анализа у нас в коде было более двух тысяч ошибок. Сначала мы работали с новыми ошибками, потом начали работать над существующими. В августе мы видим резкий скачок – это внедрение новой версии плагина, там появились новые диагностики по ошибкам. Но тенденция работы над ошибками у нас сохранилась, поэтому количество ошибок до сих пор падает, и это хорошо.

 

Что у нас в планах?

 

 

Мы собираемся развивать эту тему дальше:

  • внедрить большее количество диагностик – то есть, участвовать в развитии проекта BSL Language Server;

  • довнедрить SonarQube в оставшихся проектах – их осталось немного;

  • разработать регламент, по которому бы Sonar внедрялся сразу в новые проекты;

  • и собираемся автоматизировать CodeReview с помощью связки SonarQube + GitLab + Cruisible. 

 

Полезные ссылки

Как я и обещал, есть отдельный слайд, где можно посмотреть, что к чему, как это у себя попробовать, развернуть, зачем это надо – если у кого-то есть сомнения. О концепции подробно поговорить.

Надеюсь, кому-то это покажется полезным.

 

Вопросы

  • Сколько человек у тебя сейчас работает и смотрит SonarQube и сколько всего проектов?

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

  • Ты особое внимание уделил слайду с дублирующимися участками. Почему для вас это было проблемой?

  • Конфигурация, на которой мы сейчас ведем основной учет – у нас внедрялась очень давно, 12 лет назад, может, даже больше. И там было очень много легаси-кода. Соответственно, там было очень много копипаста. Этот показатель на слайде показывает не просто количество дублирующихся строк кода, он показывает количество дублирующихся участков. То есть, есть функции, которые в разных модулях дублируются. И мы их потихоньку, с помощью SonarQube начали отслеживать и выпиливать. И новые отслеживать.

  • Почему потребовалось избавляться от этих дублей, из-за них возникали какие-то ошибки?

  • Просто получается, что у нас, допустим, есть метод генерации штрихкода, который вызывается в пяти разных местах. Если мы дорабатываем один метод – это хорошо. Но есть и другие вызовы такого же точно метода из других мест, и получается, что нам нужно доработать все эти места. А мы можем еще и забыть их доработать – мы не идеальны. Поэтому лучше уменьшить копипаст, чтобы какая-то конкретная функциональность была в определенных модулях, в определенных методах, и нигде ничего не дублировалась. Это избыточно.

 

****************

Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT 2019. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Выбрать мероприятие

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Vladimir Litvinenko 2508 12.03.20 10:48 Сейчас в теме
О! Какая отличная статья. Интересно продолжение.

Получилось ли поставить Crucible в связке с Gitlab? Дал ли он нужный эффект без Fisheye?
Используется он сейчас с Jira или с другой системой учета задач? Если не с Jira, то как обстоят дела с интеграцией с системой учета задач?
Как выполняется ревью, если по задаче куча закладок в хранилище?
Какие задачи ставятся перед код-ревью в целом, с учетом наличия автоматических анализаторов? (ведь есть мнение, что они вообще заменяют проверки человеком).
3. &rew 27 12.03.20 12:03 Сейчас в теме
(1)
Получилось ли поставить Crucible в связке с Gitlab? Дал ли он нужный эффект без Fisheye?

Как будто РБК посмотрел)
4. Vladimir Litvinenko 2508 12.03.20 12:10 Сейчас в теме
(3) Не очень понял при чём тут РБК? Автор в публикации озвучил планы применить Crucible в связке с Sonar и Gitlab и возможно уже попробовал такую связку (это доклад с прошлогоднего выступления). По моей практике этот инструмент даёт хороший эффект только в связке с Fisheye, так как только в этом случае можно удобно смотреть историю изменений по одной задаче, если по ней было много закладок в хранилище. В ином случае казалось проще просто каждый коммит в отдельности смотреть, что по идее уже сам по себе Gitlab позволяет.

Интересуюсь можно ли получить эффект от инструмента, если его только с Gitlab срастить, так как сам не пробовал. Плюс вопросы по ревью.
7. olegtymko 599 13.03.20 04:07 Сейчас в теме
(1)
Получилось ли поставить Crucible в связке с Gitlab?


Crucible пока не воспользовались, т.к. сначала нужно поменять кардинально процесс разработке (все еще впереди). Для учета задач у нас используется 1С: ДО (переход на другую систему учета задач рассматривается).

(1)
Как выполняется ревью, если по задаче куча закладок в хранилище?


Пока только руками, по сопроводительному письму разработчика.

(1)
Какие задачи ставятся перед код-ревью в целом, с учетом наличия автоматических анализаторов?


Стат. анализ полностью не сможет заменить человека при проверке кода, часто его можно обойти разными хитрыми фокусами и оставить "запашок".
Vladimir Litvinenko; +1 Ответить
8. Vladimir Litvinenko 2508 13.03.20 11:50 Сейчас в теме
(7) Олег, спасибо за ответы! Надеюсь у Вас ещё будут публикации на эту тему.
2. &rew 27 12.03.20 11:59 Сейчас в теме
главное при написании хорошего кода – это не писать его сложно, а писать его настолько просто, чтобы программист, не погруженный в контекст, мог понять, что к чему.

Надо в 1С написать, а то непонятно, зачем под всегда возвращающую ЛОЖЬ функцию городить такой огород в КА2.4
Функция УказаниеНаправленияДеятельностиОбязательно(ХозяйственнаяОперация) Экспорт
	
	Если НЕ ПолучитьФункциональнуюОпцию("ФормироватьФинансовыйРезультат") Тогда
		Возврат Ложь;
	КонецЕсли;
	
	ЭтоДоходнаяОперация 		= ХозяйственнаяОперацияОбразуетДоход(ХозяйственнаяОперация);
	ЭтоОперацияОбразующаяАктив 	= ХозяйственнаяОперацияОбразуетАктив(ХозяйственнаяОперация);
	ОбязательныйУчетДоходов 	= Ложь;
	ОбязательныйУчетЗатрат		= Ложь;
	
	Если ЭтоДоходнаяОперация И ОбязательныйУчетДоходов Тогда
		Возврат Истина;
	ИначеЕсли ЭтоОперацияОбразующаяАктив И ОбязательныйУчетЗатрат Тогда
		Возврат Истина;
	КонецЕсли;
	
	Возврат Ложь;
	
КонецФункции
Показать
5. ImHunter 211 12.03.20 13:24 Сейчас в теме
(2) Видимо, быстро пофиксили присвоение переменных ОбязательныйУчет* (сделали Ложь вместо вызова какой-то ф-ии), а код не отрефакторили.
6. &rew 27 12.03.20 13:34 Сейчас в теме
(5)Вот интересно, пользуются ли они своим продуктом 1С Автоматическая проверка конфигураций.
9. check2 133 13.03.20 20:32 Сейчас в теме
Коллега, GitLab и SonarQube дружат даже в CE edition GL (я ни разу не настраивал эту связку, но задумываюсь). Подскажите, и это не сарказм, зачем нужен Jenkins?
10. php5 19 02.12.20 18:55 Сейчас в теме
Интересно, что покажет проверка типовой конфигурации и сколько выявит ошибок 😄
Оставьте свое сообщение

См. также

Легкий способ обновления измененной конфигурации Промо

Инструментарий разработчика v8 Бесплатно (free)

Легкий способ обновления измененной конфигурации. Сервис подготовки расширения конфигурации

25.10.2017    23938    avk72    63    

Структура запроса (Infostart Toolkit)

Консоль запросов Прочие инструменты разработчика v8 v8::Запросы 1cv8.cf Бесплатно (free)

Описание механизма разбора запроса на части (дерево), используемого в IS Toolkit и Управляемой консоли отчетов

02.03.2021    1091    Evg-Lylyk    7    

Последний раз про срез последних (на каждую дату в запросе)

Инструментарий разработчика Практика программирования Консоль запросов Универсальные функции v8 v8::Запросы Бесплатно (free)

Срез последних на каждую дату в запросе. Известные факты о задаче: часто встречается на испытаниях соискателей на работу программистом 1с, постоянно провоцирует споры об оптимальном решении. В данном тексте приводятся замеры производительности различных вариантов решения задачи.

15.02.2021    2931    randomus    47    

Ускорение расчета себестоимости УПП 1.3 в несколько раз

Закрытие периода Рефакторинг и качество кода v8 УПП1 БУ УУ Бесплатно (free)

Как определить причину медленного расчёта себестоимости в УПП 1.3, один из вариантов поиска проблем производительности с помощью инструментов 1С и ускорения расчёта средствами встроенного языка

02.02.2021    1970    RPGrigorev    19    

Универсальная функция для программного выполнения СКД Промо

Инструментарий разработчика Универсальные функции v8::СКД 1cv8.cf Бесплатно (free)

Часто встречаются вопросы на форумах о программном формировании СКД. Вроде и информации много по этому поводу, но... Все как всегда :) Собственно, в описании без лишних слов выложен текст общей функции, в которую, для выполнения отчета, нужно передать (минимум 2 параметра): СКД и ТабличныйДокумент.

20.05.2015    30949    dj_serega    18    

Реальный кейс по внедрению CodeReview

Рефакторинг и качество кода v8 1cv8.cf Бесплатно (free)

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

20.01.2021    1008    Alexsandr_Retunskiy    3    

Переезд kuzkov.info на Mantis. 1. Установка в облаке

Управление проектом Управление задачами Облачные сервисы, хостинг Групповая разработка Прочие инструменты разработчика Бесплатно (free)

Первая часть учебника по задачнице мантис (mantis), написанная по мотивам переезда kuzkov.info с жиры (jira). В учебнике достаточно подробно и с картинками описана развертка и начальная настройка мантиса в облачном веб-размещении. Также описаны причины переезда на мантис, дано краткое сравнение двух задачниц и общие выводы после переезда (открывашка: jira выключена и забыта).

20.01.2021    580    Steelvan    11    

Отладка логики запроса в консоли запросов ИР

Консоль запросов v8 1cv8.cf Бесплатно (free)

Облегчаем поиск причины неожиданного результата запроса в консоли запросов из подсистемы "Инструменты разработчика" (ИР)

05.01.2021    4823    tormozit    8    

Перевод интерфейса конфигурации с использованием программы 1С:Переводчик Промо

Инструментарий разработчика v8 Бесплатно (free)

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

09.02.2015    34046    boogie    21    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 4

EDT Бесплатно (free)

Сборка репозитория P2 на основе исходников плагина 1С:EDT для поставки пользователям.

27.12.2020    452    marmyshev    0    

Работа с СКД в продукте "Управляемые инструменты разработчика"

Прочие инструменты разработчика v8 v8::СКД Бесплатно (free)

Infostart Toolkit обладает большим количеством уникальных возможностей для работы с СКД – это анализ исполняемых текстов запросов, работа с внешними источниками в схеме СКД, получение данных в отладке и многое другое. Обо всех этих возможностях рассказал разработчик продукта Евгений Люлюк.

24.12.2020    1906    Evg-Lylyk    2    

Операторы перехода в программном коде: использовать или нет?

Рефакторинг и качество кода v8 1cv8.cf Бесплатно (free)

Рассмотрим ситуации использования операторов перехода Перейти (GoTo), Возврат (Return), Прервать (Break), Продолжить (Continue). Как вы считаете - это дурной тон, нормальная практика или зависит от ситуации?

16.11.2020    1930    ivanov660    22    

Сервис обмена кодом Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Бывало так, что вам нужно быстро показать кому-то свой код, но опубликовать его негде, так как популярные сервисы просто не поддерживают раскраску кода 1С? Теперь решение есть!

26.06.2015    20636    Infactum    23    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 3

EDT Бесплатно (free)

Описание процесса создания UI-плагина для EDT с Quick-Fix по проверке.

08.11.2020    637    marmyshev    0    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 2

EDT Бесплатно (free)

Описание процесса создания плагина для EDT по валидации с квикфиксом.

07.11.2020    1296    marmyshev    1    

Отладка в Infostart Toolkit

Консоль запросов Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Отладка запросов, схем компоновки данных, просмотр содержимого менеджера временных таблиц.

05.11.2020    3040    Evg-Lylyk    16    

1C:Enterprise Development tools (EDT) или кодим в Eclipse Промо

EDT v8 Бесплатно (free)

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

11.04.2015    78127    DitriX    297    

Чистый кот (Clean cat)

Рефакторинг и качество кода v8 1cv8.cf Бесплатно (free)

От автора легендарного бестселлера "Совершенный кот".

04.11.2020    1568    vasilev2015    25    

Как сделать плагин для 1С:EDT для начинающего Java+1C разработчика. Часть 1

EDT Бесплатно (free)

Введение в разработку плагинов для 1С:EDT. Цель: показать, что плагины для 1С:EDT можно делать быстро и легко.

17.10.2020    3540    marmyshev    24    

Доработайте это "немедленно", или как уменьшить доработки конфигурации

Рефакторинг и качество кода v8 Россия Бесплатно (free)

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

25.09.2020    3678    Богатырев Артур    20    

Проставление большого количества галочек в активном окне винды Промо

Практика программирования Сервисные утилиты Инструментарий разработчика Россия Бесплатно (free)

Как проставить большое количество галочек подряд в любом окне винды

07.11.2010    30862    Boris-Leleko    9    

Метод борьбы с большим количеством комментариев в коде

Практика программирования Рефакторинг и качество кода v8 1cv8.cf Бесплатно (free)

Решил поделиться нашим способом борьбы с сильно закомментированным кодом.

08.09.2020    1288    tambu    9    

Улучшенный конструктор запроса тонкого клиента (Infostart Toolkit)

Инструментарий разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

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

07.09.2020    3806    Evg-Lylyk    13    

Пробуем Снегопат (устанавливаем и настраиваем полнофункциональную триальную версию)

Снегопат, openconf v8 Бесплатно (free)

Снегопат — это инструмент, который расширяет штатные функции конфигуратора 1C и превращает его в современную IDE. В данной статье я подробно расскажу, как установить триал-версию Снегопата и сразу начать использовать его наиболее полезные функции. Статья рассчитана прежде всего на тех, кто со Снегопатом сталкивается впервые и хочет разобраться в его возможностях.

31.08.2020    9733    kuntashov    72    

TurboConf:Шаблоны - сервис для поиска и хранения фрагментов кода Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Сервис добавляет в Конфигуратор возможность поиска и хранения фрагментов кода. Делитесь своими шаблонами с другими разработчиками или используйте уже готовые!

13.08.2014    22660    m.bolsun    68    

paste1c.ru - сервис для обмена кодом для 1С:Предприятия

Прочие инструменты разработчика v8 Бесплатно (free)

Paste1C.ru - сервис для обмена кодом для 1С:Предприятия c подсветкой синтаксиса и подсказками.

21.08.2020    6201    salexdv    48    

1С:EDT. Куда пинать, чтобы полетело?

EDT v8 УНФ Россия Бесплатно (free)

Работал в 1С Конфигуратор и решил перейти на 1С EDT. Не получилось сразу. Потребовалась модификация компьютера.

19.08.2020    5247    pa240775    33    

Снегопат – Dev или Ops?

Снегопат, openconf v8 Бесплатно (free)

Снегопат – программный комплекс, повышающий эффективность работы в конфигураторе 1С. О новом эволюционном этапе проекта, его возможностях и планах развития на митапе «DevOps в 1С» рассказал разработчик Снегопата, системный программист компании Инфостарт Александр Орефков.

17.08.2020    5800    orefkov    45    

Подсистема "COMExchange": консоль запросов в режиме «Консоль кода». Промо

Консоль запросов v8 1cv8.cf Россия Бесплатно (free)

Описана возможность использования обработки «Консоль запросов 1С+ADO» в качестве «консоли кода». При этом имеется возможность помещения результатов вычислений в «табло формул». Кроме результатов вычислений в это «табло» можно также вывести время выполнения и описание обработанных ошибок времени исполнения.

03.04.2014    26195    yuraos    2    

Динамический список, ключи записей. Нюансы

Инструментарий разработчика Практика программирования Конфигурирование 1С v8 Бесплатно (free)

Заметки об особенностях динамических списков с произвольным запросом и видом ключа, отличным от "Авто"

07.08.2020    2698    Yashazz    6    

Редактор HTML

Инструментарий разработчика Прочие инструменты разработчика v8 1cv8.cf Россия Бесплатно (free)

Инструмент из состава набора "Универсальные инструменты 1С" для быстрой адаптации html страниц для корректного отображения в Поле HTML документа

03.08.2020    2013    cprit    3    

Глобальное меню разработчика для управляемых форм

Инструментарий разработчика v8 v8::УФ 1cv8.cf Бесплатно (free)

Подсистема "Инструменты разработчика". Глобальное контекстное меню разработчика для управляемых форм в толстом клиенте.

03.08.2020    4231    tormozit    25    

Ускорение реструктуризации таблиц Промо

Инструментарий разработчика Администрирование данных 1С Тестирование и исправление Бесплатно (free)

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

12.09.2013    52359    OLEG4120    32    

Консоль кода и зачем она нужна

Прочие инструменты разработчика v8 Бесплатно (free)

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

27.07.2020    5301    Evg-Lylyk    47    

Как поставить качество кода на поток и при этом не разориться? Какие шаги стоит сделать уже завтра, чтобы повысить планку качества?

Рефакторинг и качество кода v8 Бесплатно (free)

Наличие в 1С-решениях некачественного кода мешает их поддержке и эффективному развитию. Как добиться соблюдения стандартов разработки при написании кода и внедрить бюджетный Code Review с помощью инструментария на основе АПК (Автоматизированной проверки конфигураций) на конференции Infostart Event 2019 Inception рассказал технический руководитель компании Бизнес Лоджик Иван Козлов.

22.06.2020    3407    kozlov.alians    1    

Unit-тесты с помощью 1C:Enterprise Development Tools

EDT v8 Бесплатно (free)

Концепция TDD требует перестроения подходов к разработке и наличия инструментов для запуска Unit-тестов. Про написание плагина для EDT, который содержит в себе инструменты написания, анализа результатов и запуска Unit-тестов для конфигураций 1С на конференции Infostart Event 2019 Inception рассказал ведущий специалист по внедрению компании 1С-Рарус Александр Капралов.

11.06.2020    4582    doublesun    8    

VM1C - виртуальная машина для 1С Промо

Инструментарий разработчика v8 1cv8.cf Россия Бесплатно (free)

Демонстрация возможностей виртуальной машины для 1С. Создаем и выполняем код модулей в режиме Предприятия в реальном времени.

07.06.2013    26203    m.bolsun    46    

Обработка кодом результата запроса в Консоли запросов 9000

Консоль запросов v8::Запросы Бесплатно (free)

Пять вариантов обработки кодом в консоли запросов 9000: простое выполнение, построчно без индикации, построчно с индикацией, простое в фоне, построчно в фоне с индикацией.

01.06.2020    1699    kuza2000    7    

Молчание "best practices": тестовые и эталонные данные, структура и связность, падения и новая функциональность, и другие неудобные вопросы к сценарному тестированию

Рефакторинг и качество кода Сценарное тестирование v8 Бесплатно (free)

Непонимание некоторых базовых вопросов мешает программистам начать применять инструменты тестирования в процессе разработки для 1С. Как разобраться в терминологии и интегрировать процесс тестирования в разработку 1С-решений на конференции Infostart Event 2019 Inception рассказал руководитель отдела разработки компании C.T.Consultants Решитко Дмитрий.

29.05.2020    4507    grumagargler    14    

Шпаргалка. Автоматическое тестирование внешних отчетов и обработок в нескольких информационных базах

Прочие инструменты разработчика v8 Бесплатно (free)

Используем Автоматизированное тестирование на практике. Простой код для обновления и запуска внешних отчетов и обработок в нескольких ИБ. Создаем рабочее решение с нуля.

02.05.2020    4787    pparshin    21    

Подсистема "COMExchange", "Консоль запросов 1C + ADO" - сервис обработки выборки запроса: грузим курс «бакса» ЦБРФ из файла *.dbf или *.xlsx. Промо

Консоль запросов v8 КА1 УТ10 УПП1 Россия Бесплатно (free)

На примере загрузки курса валюты продемонстрированы возможности консоли запросов в составе подсистемы "COMExchange" для обработки данных из внешних файлов и их синхронизации с данными информационной базы 1С.

10.03.2013    33440    yuraos    3    

Установка EDT 2020.2 на Ubuntu 18.04

EDT Россия Бесплатно (free)

Установка EDT 2020.2 на Ubuntu 18.04 Заметки на будущее.

12.04.2020    3193    awk    14    

Enterprise Development Tools, версия 2020.2 для мобильной разработки. Бег по граблям (серия публикаций от чайника для чайников)

EDT v8::Mobile 1cv8.cf Бесплатно (free)

Небольшие советы, которые сберегут время при работе с Enterprise Development Tools, версия 2020.2.

10.04.2020    4762    capitan    8    

Управляемая консоль отчетов – новый функциональный инструмент для работы с запросами и СКД в управляемых формах

Прочие инструменты разработчика Консоль запросов v8::УФ v8::Запросы v8::СКД Бесплатно (free)

Консоль запросов и СКД – один из наиболее часто используемых программистом инструментов. Как с его помощью можно упростить разработку, в своем докладе на конференции Infostart Event 2019 Inception рассказал Евгений Люлюк, ведущий программист компании GLT.

06.04.2020    8772    Evg-Lylyk    0    

Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: корректируем регистры или «Берём банк, кассу, экспроприируем экспроприаторов». Промо

Консоль запросов v8 1cv8.cf Россия Бесплатно (free)

На примере шуточного примера продемонстрированы не шуточные возможности консоли запросов в составе подсистемы "COMExchange" для работы с регистрами, подчинёнными регистратору («обнуление» регистров, ввод начальных итогов (сведений), корректировка итогов).

31.03.2013    22694    yuraos    7    

Рефакторинг в редакторе модулей

Рефакторинг и качество кода v8 1cv8.cf Бесплатно (free)

Для тех, кто не пользуется Ctrl+Alt+R. “Контролируемый процесс улучшения кода без написания новой функциональности”, “Равносильное преобразование алгоритмов” и т.п в данной статье не рассматриваются. Тема статьи: замечательные команды из подменю Рефакторинг контекстного меню редактора модулей в конфигураторе. В статье описано, как команды из подменю Рефакторинг помогают при написании кода

10.03.2020    4176    pparshin    2    

Качество кода: Поведенческие паттерны проектирования

Рефакторинг и качество кода v8 Бесплатно (free)

Поговорим про применение паттернов проектирования в разработке на 1С.

03.03.2020    7722    ivanov660    0    

Боремся с запросами в циклах. Мой опыт рефакторинга запросов

Рефакторинг и качество кода v8::Запросы 1cv8.cf Бесплатно (free)

В текущей публикации я предлагаю вам несколько простых примеров с решениями, в которых будет представлено решение "единым запросом", без использования запросов в цикле.

02.03.2020    7479    aximo    55    

Гаджеты для одинэсника. Часть 2 Промо

Инструментарий разработчика Мобильная разработка ИТ-компания Бесплатно (free)

... ситуация с планшетами весь 2012-й год была достаточно запутана. То и дело всплывала какая-то модель, которая на некоторое время по отношению цена/качество привлекала к себе внимание. Я долго откладывал эту статью, ожидая лидеров, и они, наконец, обозначились...

20.03.2013    35144    O-Planet    61    

Технология разветвлённой разработки, использующая git, ci/cd

CI/CD Git (GitHub, GitLab, BitBucket) Методология управления разработкой EDT 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Адаптация и расширение требований к разветвлённой разработке с использованием git и ci/cd, основанное на стандартах 1С

24.02.2020    6619    check2    10    

CI/CD для 1С проектов, унифицировано, с кастомизацией

CI/CD Инструментарий разработчика Бесплатно (free)

Тема CI/CD в связке с 1С не нова, но многих пугает сложность использования и поддержки, необходимость обучения команды. Про то, как унифицировать и упростить поддержку сборочных конвейеров для большого количества решений, в своем докладе на конференции Infostart Event 2019 Inception рассказал начальник отдела компании BIA-Technologies Валерий Максимов.

20.02.2020    7152    theshadowco    12    

О синхронизации ИБ с проектом в EDT

EDT Бесплатно (free)

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

19.02.2020    4392    check2    2    

Качество кода: слабое связывание и высокая сопряженность (Low coupling and High Cohesion)

Рефакторинг и качество кода Бесплатно (free)

Поговорим о некоторых общепринятых подходах и принципах разработки кода.

10.02.2020    8922    ivanov660    90