Как управлять качеством кода 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 2228 12.03.20 10:48 Сейчас в теме
О! Какая отличная статья. Интересно продолжение.

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

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

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


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

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


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

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


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

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

См. также

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

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

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

10.03.2020    2426    pparshin    2       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Принципы разработки

Статья Программист Нет файла Бесплатно (free) Рефакторинг и качество кода

Доброго дня и хорошего кода, коллега.

04.03.2020    2024    Правдин    27       

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

Статья Программист Нет файла v8 Бесплатно (free) Рефакторинг и качество кода

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

03.03.2020    4554    ivanov660    0       

Базовый курс для начинающих 1С-программистов. Онлайн-интенсив со 2 июня по 2 июля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500-9500 рублей

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

Статья Программист Стажер Нет файла v8::Запросы 1cv8.cf Бесплатно (free) Рефакторинг и качество кода

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

02.03.2020    3895    aximo    35       

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

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

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

24.02.2020    3093    check2    10       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

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

Статья Программист Руководитель проекта Нет файла Бесплатно (free) CI/CD Инструментарий разработчика

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

20.02.2020    2895    theshadowco    11       

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

Статья Системный администратор Программист Нет файла Бесплатно (free) EDT

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

19.02.2020    1726    check2    2       

Онлайн-курс «Автоматизация процессов управления МТО: методика сбора и формализации требований» с 1 апреля по 13 мая 2020 года. Промо

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

40000 рублей

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

Статья Программист Нет файла Бесплатно (free) Рефакторинг и качество кода

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

10.02.2020    5686    ivanov660    90       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Атака сервера кнопонажималкой

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

Чтобы убедиться, что продукт выдержит планируемую нагрузку, необходимо провести нагрузочное тестирование – написать сценарии пользовательских действий и запустить их в несколько потоков, чтобы заранее найти проблемы в бизнес-логике и «узкие места». О том, как упростить написание сценариев тестирования для конфигурации Тест-центр с помощью фреймворка Vanessa Automation на конференции Infostart Event 2019 Inception рассказал ведущий программист компании «ПервыйБИТ» Никита Грызлов.

20.01.2020    3509    nixel    16       

Часовой на страже логов

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

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    3509    Scorpion4eg    6       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

EDT + УТ 11.4 + БП 3.0 + Расширения. Часть 02

Статья Программист Нет файла v8 Бесплатно (free) EDT

Продолжение "путевых заметок" про EDT...

09.01.2020    4085    abc120000    30       

Онлайн-интенсив "1C:Предприятие для программистов: Бухгалтерские задачи" с 22 июня по 8 июля 2020 г. Промо

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

4900 рублей

EDT 1.16. Первые 20 часов работы

Статья Программист Нет файла v8 Россия Бесплатно (free) EDT

Первое знакомство с 1C:Enterprise Development Tools, версия 1.16.0.363.

25.12.2019    8317    abc120000    11       

Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"

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

Переход на управляемые формы перевернул процесс разработки на 1С, заставив программистов менять привычные подходы к описанию логики работы интерфейса. Руководитель компании «Цифровой Кот» Юрий Лазаренко в своем докладе на конференции Infostart Event 2019 Inception рассказал о том, как устроены управляемые формы и как правильно работать с тонким клиентом платформы 1С:Предприятие.

23.12.2019    8973    TitanLuchs    23       

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

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Мониторим производительность с помощью 1С RAS

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Инструментарий разработчика Производительность и оптимизация (HighLoad)

Подключаемся и анализируем данные через 1С RAS. Необходимо выполнить 5 пунктов и серьезный инструмент мониторинга будет у вас в руках.

19.12.2019    6655    ivanov660    16       

Стабильность превыше всего

Статья Программист Нет файла v8 Бесплатно (free) Рефакторинг и качество кода

Странная заметка о поддержании стабильности в условиях интенсивного изменения конфигурации.

07.11.2019    7569    YPermitin    40       

Онлайн-курс «Практические аспекты внедрения регламентированного учета и расчета себестоимости в 1С:ERP на крупных промышленных предприятиях» с 20 апреля по 15 мая 2020 года. Промо

Курс рассчитан для подготовки экспертов по регламентированному учету и учету затрат для внедрения на крупных промышленных предприятиях с «исторически сложившимся» учетом

9000 рублей

Git для 1С-ника и другие технологии групповой разработки

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Инструментарий разработчика Git (GitHub, GitLab, BitBucket)

У многих специалистов в отношении Git сложились стереотипы, мешающие начать работу с этим прекрасным и удобным инструментом. Почему его не стоит бояться, и чем он может упростить жизнь 1С-никам, рассказал архитектор ГК «Невада» Станислав Ганиев.

28.10.2019    9732    stas_ganiev    16       

Фреймворк для создания бизнес web-приложений

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

Для создания систем, решающих узкие бизнес задачи, использовать 1С бывает нецелесообразно. Хочу представить альтернативу - web фреймворк katejs. Будет интересно также тем, кто интересуется web разработкой на современном javascript.

15.10.2019    3943    nep_i    24       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

Про ТабДок или TabDoc Pro

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

Табличный документ – всем знакомый и привычный компонент продукта 1С. Про оптимизацию работы табличного документа, его проблемы и недостатки в своем докладе на конференции Infostart Event 2019 Education рассказал ведущий программист BIA-Technologies Князьков Алексей.

11.09.2019    4673    AKnyazkov    26       

DevOps для 1С. Онлайн-курс проходит с 16 апреля по 11 июня 2020 года. Промо

Данный онлайн-курс предусматривает изучение процессов DevOps, их применение при разработке на платформе 1С. В результате прохождения онлайн-курса вы сможете: настроить ПО необходимое для проведения проверок и тестирования, создавать сценарии тестирования и объединять их в комплексные процессы, создавать скрипты для автоматизации процессов DevOps.

12000 рублей

FastCode - сервис поиска кода 1С

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

Добавляйте свои шаблоны кода или ищите готовые шаблоны других разработчиков. Оставляйте отзывы и лайки, добавляйте понравившиеся фрагменты в свою библиотеку. Ищите по БСП или по общим модулям своей конфигурации.

10.09.2019    7806    m.bolsun    22       

Конвейер проверки качества кода

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Практика программирования Математика и алгоритмы

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    14425    19    Stepa86    44       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Кодогенерация и метагенерация в 1С

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

В своем докладе на конференции INFOSTART EVENT 2018 EDUCATION Дмитрий Белозеров рассказал о разработке инструмента, позволяющего программно работать с метаданными 1С и писать скрипты для выполнения тех же действий, которые выполняет разработчик в конфигураторе –  с какими сложностями и нюансами пришлось столкнуться, и что получилось в итоге.

26.08.2019    6524    kirovsbis    28       

Как мы разрабатываем в EDT

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

EDT – это новая среда разработки, на которую сейчас перешли разработчики фирмы «1С». Однако до сих пор существует ряд «белых пятен», касающихся как теоретической, так и практической части применения этого инструмента. Про опыт перехода на разработку в EDT на конференции INFOSTART EVENT 2018 EDUCATION рассказал начальник сектора разработки в компании «Группа Полипластик» Владимир Крючков.

23.08.2019    9145    ivanov660    22