Сонар куб для 1с как установить
На сервере SonarQube создать проект для анализируемой конфигурации.
8.2 Создание токена для авторизации
На сервере SonarQube сгенерировать токен авторизации (рис. 8.1).
8.3 Структура каталогов для исходников 1С-решения
Рекомендуется размещать исходники конфигураций 1С, расширений 1С и т.п. в четко заданной и обоснованной структуре каталогов.
Преимущества данного шаблона:
- содержит выработанную и обдуманную семантически структуру каталогов,
- содержит необходимые подмодули для быстрого старта.
Структура каталогов для разработчиков 1С шаблона vanessa-bootstrap:
Описание элементов шаблона:
Имя | Описание |
---|---|
doc | Файлы документации в формате Markdown: рекомендации разработчикам и команде проекта, описание релизов (RELEASE NOTES) и оперативного плана (ROADMAP). (Пользовательские инструкции хранятся в WiKi проекта.) |
examples | Примеры кода c расширением bsl. Текстовые описания на языках Gherkin и Markdown. |
features | Компоненты и функциональность продукта. Автоматизированные сценарии проверки, структурированные по подсистемам и объектам продукта. |
lib | Внешние отчеты и обработки, необходимые для работы продукта, разработанные в рамках создания продукта и не являющиеся сторонними разработками. |
src | Исходные тексты решения, созданные на платформе 1С:Предприятие: * исходные коды, разработанные с помощью проекта Graphite, * исходные коды, интегрированные из хранилища 1С с помощью инструмента vanessa-unpack, * исходные коды обработок, интегрированные с помощью precommit1C. |
src/cf | Исходники конфигурации |
src/cfe | Исходники расширений, например, расширение «фикс-задачи-25» кладем в src/cfe/фикс-задачи-25 расширение «ФормаПродаж» кладем в src/cfe/ФормаПродаж |
tools | Любые сторонние утилиты, необходимые для настройки проекта или для дополнительной установки. |
vendor | Внешние зависимости – библиотеки, конфигурации и т.д. Модули по умолчанию: vanessa-behavior – для разработки через поведение, vanessa-base-init – для создания эталонных фиксированных конфигураций, vanessa-bdd-editor – для удобного управления требованиями заказчика, vanessa-unpack – для интеграции с хранилищем 1С. |
.gitignore | Файл .gitignore для скрытия файлов и папок от системы контроля версий Git. |
.gitmodules | Структура подмодулей |
LICENSE | Файл лицензии |
README.md | Описание проекта, вводная информация, информация о других файлах проекта, порядок установки, ссылки и т.п. |
Порядок установки шаблона vanessa-bootstrap (применения в своем проекте)
- Склонируйте репозиторий:
- Подключите репозиторий к своему git-серверу (GitHub, Bitbucket, GitLab, etc):
- Подпишитесь на обновление шаблона:
8.4 Настройка сканирования исходных кодов
Настройка sonar-project.properties
Самый простой и надежный способ создать файл настроек sonar-project.properties – это воспользоваться поставляемым инструментом «vanessa-sonar», который позволяет создать полноценный файл настроек с указанием всех необходимых ключей настроек. Смотрите раздел Инструмент «vanessa-sonar» – тонкая настройка анализа файлов.
При заполнении файла sonar-project.properties рекомендуется подключать только необходимые расширения файлов, т.к., например, анализ HTML-файлов дает сильно ощутимый прирост по времени выполнения (и памяти соответственно), а практической пользы не несет.
Для анализа необходимых файлов и модулей конфигурации, а также скриптов OneScript в этом файле необходимо указать:
Чаще всего не требуется анализировать все или часть отчетов, входящих в конфигурацию. Отключить все отчеты можно, указав параметр:
или отключив только регламентированную отчетность:
Ниже приведены более подробные рекомендуемые настройки для исключения файлов. Также можно отключать отчеты по частичному вхождению.
В файлах *.properties нельзя использовать кириллицу – кириллические символы необходимо кодировать символами юникода (\u1234).
На клиентской машине нужно место под сам git-репозиторий (в случае запуска анализа на CI-сервере и не под один) плюс порядка 10 гигабайт места под временные файлы.
В результате правильной настройки в каталоге проекта должен быть создан файл sonar-project.properties с примерным содержимым:
Оперативная память
Для клиентской части анализа критически необходимо указывать параметр «-Xmx» (по умолчанию анализу/сканированию выделяется только 768 мегабайт памяти).
Конфигурация 1С (количество миллионов строк) | Минимально необходимая оперативная память | Рекомендуемые параметры |
---|---|---|
ERP | 2Gb | 4Gb |
УХ | 2GB | 4Gb |
БП | 1GB | 2Gb |
УТ | 1GB | 2Gb |
ЗУП | 1GB | 2Gb |
УНФ | 1Gb | 2Gb |
КА | 1GB | 2Gb |
БСП | 1GB | 2Gb |
Дополнительно мы рекомендуем использовать «Oracle JDK» и указывать специальные флаги для включения более агрессивного сборщика мусора – это позволяет экономить выделяемую RAM и снизить лимит памяти.
Установка параметров клиентской части анализа (Sonar-scanner) производится через установку переменной среды «SONAR_SCANNER_OPTS».
Пример указания (4 Gb для Windows):
Жесткие диски
На машине, на которой запускается Sonar-scanner, желательно иметь SSD-диск и располагать анализируемый проект на нем. В целом на синтетических тестах SAS-диски проигрывают SSD (в некоторых сценариях на порядок).
Нагрузка на диск составляет примерно 25% от общей нагрузки.
Процессор
Частота процессора влияет на скорость анализа «git blame», скорость работы измерителя дублирования кода и на общую скорость выполнения проверок. Если есть возможность выделить ядра помощнее (по крайней мере на клиентскую часть), то стоит это сделать.
В момент клиентской части анализа средняя нагрузка на процессор - 100% в двух третях (по продолжительности) анализа, 50%-70% во одной трети анализа.
Антивирус и прочие «проактивные» системы защиты
Во время работы Sonar-scanner активно создает и удаляет временные файлы. Работа антивируса может значительно (до двух раз) замедлить скорость выполнения анализа. При работе Sonar-scanner рекомендуется:
- Либо добавлять в исключения каталоги «%USERPROFILE\.sonar» и подкаталог «.scannerwork», автоматически создаваемый в текущей рабочей директории при запуске анализа.
- Либо отключать программные системы защиты
8.5 Запуск сканирования Sonar-scanner на сервере CI «Jenkins»
Для запуска Sonar-scanner из Jenkins необходимо:
Запуск в режиме одной ветки
Указание версии проекта
В качестве версии проекта можно использовать версию конфигурации из файла Configuration.xml в корневом каталоге выгрузки конфигурации в файлы. Для получения значения версии можно воспользоваться механизмами чтения файлов и поиска по регулярному выражению:
8.6 Запуск ручного сканирования Sonar-scanner
В некоторых случаях необходимо произвести запуск сканирования непосредственно вручную без использования сборочных контуров, для этого необходимо:
В случае каких-либо технических проблем для сбора лога запустить сканирование командой:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
Поддержка языка 1С:Предприятие 8 и OneScript для SonarQube.
Возможности
Установка и обновление
Матрица соответствия версий
Версия SonarQube | Версия плагина | Версия JAVA |
---|---|---|
8.9+ | 1.11.0+ | 11 |
7.9+ | 0.7.0…1.10.0 | 11 |
7.4 - 7.8 | 0.1.0…0.6.0 | 8 |
Запуск анализа
Настройка окружения
Для анализа исходных кодов 1С используется утилита sonar-scanner.
Утилите необходимо указать параметры анализа одним из нижеперечисленных способов:
- в качестве аргументов командной строки, используя синтаксис -DимяПараметра=значениеПараметра
- используя файл sonar-project.properties
Пример файла sonar-project.properties :
Способы передачи параметров можно комбинировать.
Если на сервере SonarQube включено требование принудительной авторизации и/или запрет анонимного анализа проектов, утилите sonar-scanner дополнительно нужно передавать токен авторизации, который можно получить согласно инструкции User guide/User token
Пример строки запуска
Настройки плагина
Переключение осуществляется с помощью настройки sonar.bsl.languageserver.diagnosticLanguage , расположенной в секции “Администрирование”, раздел 1C (BSL) .
Для переключения языка имен и описаний правил данную настройку необходимо устанавливать в разделе “Администрирование” сервера:
Для переключения языка текстов замечаний данную настройку необходимо устанавливать в разделе “Администрирование” проекта:
Интеграция с BSL Language Server
По умолчанию в качестве анализатора используется встроенный провайдер диагностик из BSL Language Server.
Выполнение анализа встроенным анализатором можно отключить, установив параметру sonar.bsl.languageserver.enabled значение false через командную строку или файл настроек.
Отключение анализатора не отключает процесс парсинга файлов. Расчет метрик и подсветка синтаксиса будут работать вне зависимости от значения настройки.
Импорт результатов из внешнего файла
BSL Language Server может запускать анализ исходного кода и выдавать список обнаруженных замечаний в виде json-файла. Инструкция по запуску BSL Language Server в режиме анализа расположена на странице проекта.
Для импорта результата при запуске утилиты sonar-scanner нужно передать параметр sonar.bsl.languageserver.reportPaths через аргументы командной строки или через файл sonar-project.properties , в котором указать путь к файлу (или файлам, через запятую) с результатами анализа.
Расчет строк для покрытия тестами (Устарело)
Для расчета строк покрытия используйте утилиту Coverage41C или подобную, возвращающую полные данные по покрытию.
Интеграция с Автоматизированная проверка конфигураций
Доступна с версии 1.6
Включить добавление правил и профилей из АПК можно установив свойство sonar.bsl.acc.enable
После включения при загрузке файла с ошибками из АПК в формате json будет происходить сопоставление с внутренними правилами. Это дает возможность управлять ошибками импортируемыми из АПК на стороне sonarqube.
Важно Так как ключом правила является код ошибки из АПК, то сопоставление работает только если при выгрузке ошибок обработкой acc-export указать acc.titleError=code
Cвойство sonar.bsl.acc.accRulesPaths . Правила из поставки можно расширить за счет свойих внешних файлов в формате:
Cвойство sonar.bsl.acc.createExternalIssues . Определяет как поступить с ошибками, которые были в файле, но для них не было найдено активного правила. Для фильтрации ошибок поступающих от АПК на строне sonarqube потребуется отключить свойство.
SonarQube Russian Language Pack
This is the plugin to translate SonarQube web application in Russian.
Originally created by SilverBulleters, LLC. Now maintained by 1c-syntax community.
Install via Marketplace
Manual download from Releases page
- Check the Releases section
- Download sonar-l10n-ru-plugin-x.x.jar file
- Copy the sonar-l10n-ru-plugin-x.x.jar into extensions dir of the SonarQube like it described in SonarQube docs
Build it from source
- You must get the source with git client
- run ./gradlew clean build
- then copy the build\libs\*.jar into extensions dir of the SonarQube like it described in SonarQube docs
SonarQube | sonar-l10n-ru |
---|---|
9.0 | 9.0 |
8.9 | 8.9.1 |
8.8 | 8.8.1 |
8.7 | 8.7.1 |
8.6 | 8.6.1 |
8.5 | 8.5.2 |
8.4 | 8.4.2 |
8.3 | 8.3.2 |
8.2 | 8.2.2 |
8.1 | 8.1.2 |
8.0 | 8.0.3 |
7.9.x (LTS) | 7.9.2 |
7.0-7.8 | 1.9 |
6.7.x (LTS) | 1.8 |
6.6 | 1.7 |
6.5 | 1.6 |
6.4 | 1.5 |
6.3 | 1.4 |
6.2 | 1.3 |
6.1 | 1.2 |
6.0 | 1.1 |
5.6.x (LTS) | 1.0 |
How activate Russian language ?
SonarQube Platform language pack activation depends on your browser locale. Quote from an official doc:
Language packs are plugins that change the language of the user interface. They are called based on the language preference set in the user's browser.
To request a new feature or report a localization bug, please create a new issue in GitHub Issues.
If you plan to join the localization team, please join us on CrowdIn Project
For russian spoken people
Чтобы оставить запрос на новую функциональность или сообщить об ошибке локализации, пожалуйста, создайте issue на странице GitHub Issues.
Если вы хотите принять участие в локализации - вы можете присоединиться к команде локализаторов в рамках проекта CrowdIn
Процесс развертывания SonarQube и его интеграции с имеющимся окружением (сборочная система, сервер непрерывной интеграции, система контроля версий) не вызывает затруднений благодаря большому количеству подробной документации. Достаточно легко настраиваются виджеты, позволяющие оценивать как состояние портфолио проектов в целом, так и состояние каждого проекта в отдельности.
В данном руководстве приведены самые важные и полезные особенности установки.
Установка сервера проверки SonarQube
В данном параграфе приводится список действий для установки на локальной машине пользователя под управлением операционной системы MS Windows 10 x64. Для системы Unix необходимо выполнить аналогичные действия.
- Изучите соответствие версий JDK, SonarQube и Sonar-scanner в разделе Раздел 5. Необходимые компоненты и определите необходимые версии.
- Скачайте последний релиз SonarQube с официального сервера.
- Извлеките файлы в каталог, с которого будет запускаться сам сервер SonarQube. В дальнейшем этот каталог будет указываться как %SONARQUBE_HOME%
- Определите разрядность операционной системы для выбора вида Java Development Kit: 32-разрядная или 64-разрядная.
- По возможности мы рекомендуем использовать «OracleJDK» вместо «OpenJDK» из-за более агрессивной работы сборщика мусора.
- Скачайте и установите Java Development Kit необходимой разрядности (х86 для 32-битной ОС, х64 – для 64-разрядной).
Подключение плагина «SonarQube 1C (BSL) Plugin» и активация лицензии
В комплекте подсистемы поставляется jar-файл плагина и файл лицензии «sonarqube-bsl-plugin.lic». Далее описывается порядок действий по интегрированию плагина в платформу SonarQube и активации его лицензии. Все нижеописанные действия должны выполняться пользователем с правами администратора.
- Файл плагина (jar-файл) поместите в директорию «extensions/plugins» каталога, в который был разархивирован сервер SonarQube.
- Файл лицензии «sonarqube-bsl-plugin.lic» поместите в домашнюю директорию пользователя, под которым запускается сервис SonarQube.
- Для Windows – в следующую системную директорию: «C:\Windows\System32\config\systemprofile» (в режиме администратора).
- Для Linux – положите указанный файл в каталог пользователя.
- Также можно указать произвольное местоположение файла лицензий. Для этого в файле «%SONARQUBE_HOME%/conf/sonar.properties» необходимо изменить расположение файла лицензий в блоках "web" и "ce" вида:
Запуск и настройка сервера SonarQube
- На Windows запустите web-сервер SonarQube, создав службу Windows и включив её (соблюдайте разрядность операционной системы).
Можно воспользоваться инструментом в поставке сервера в каталоге «%SonarHome%\bin\windows-x86-64» – «InstallNTService.bat», «StartNTService.bat», «StopNTService.bat»
Следует учитывать, что указанные процедуры необходимо выполнять с правами локального администратора.
- Войдите в систему управления под учетной записью «admin» с паролем «admin» Перейдите в настройки установки плагинов сервера:
- Установите расширение «Russian pack» для подключения русского языка, что упростит вашу дальнейшую работу с плагином:
- После изменения надписи «Install» на «Install pending» (надпись изменит цвет с синего на зеленый) перезапустите сервер последовательным выключением – включением службы (через консоль «Службы» или с помощью вышеперечисленных инструментов из поставки сервера).
- Подождите до 5 минут и проверьте доступность Web-интерфейса SonarQube по пути http://localhost:9000. Если у вас выбран другой адрес веб-интерфейса сервера, укажите его.
- Перейдите по ссылке и войдите в систему под учетной записью admin (см. п4-п5);
- Перейдите на вкладку "Правила" и убедитесь в существовании языка 1С (BSL):
- Если Вы не видите язык «1C (BSL)», тогда проверьте правильность установки файла лицензии или файла плагина. Если местоположение файла лицензии изменилось, перезапустите сервер SonarQube согласно разделу с подключением лицензии.
Настройка выделения оперативной памяти
Если у вас установлена 32-х битная версия JDK, необходимо донастроить файл «%SONARQUBE_HOME%/conf/sonar.properties» - в «javaOpts» компонентов «web, search и ce» указать параметр «-server». Пример приведен ниже. Если у вас установлена 64-х битная версия JDK, ключ -server указывать бессмысленно, так как он включен по умолчанию.
Выделение доступной оперативной памяти регулируется с помощью опции «-Xmx». Выделение памяти рекомендуется выполнить для 3-х серверных компонент «sonar.web.javaOpts, sonar.ce.javaOpts, sonar.search.javaOpts». Особенно для компонента «ce», выполняющего «серверную» часть анализа (обработка результатов, дорасчет серверных метрик, сохранение результатов в базу).
В Linux-системах могут возникнуть проблемы в отображении web-компонент (замедление работы), связанных с недостаточным количеством энтропии для применения шифрования. Побороть это можно, изменив параметр -Djava.security.egd.
Часть конфигурационного файла «%SONARQUBE_HOME%/conf/sonar.properties» с одного из наших production-серверов (Java 11, 64-x):
Обратите внимание, что использование ключа -XX:+UseConcMarkSweepGC, не рекомендовано, так как данный сборщик мусора объявлен устаревшим начиная с Java 9. Это же и касается ключа -XX:+UseParNewGC. Данный сборщик был объявлен устаревшим в Java 9 и удален в Java 10.
Согласно этому конфигурационному файлу сервер SonarQube должен иметь минимум 9 гигабайт (-Xmx 2 + 6 + 1) свободной памяти для своей работы + некоторое количество памяти для работы Elasticsearch.
Установка инструмента сканирования Sonar-Scanner
В данном руководстве описываются действия по установке платформы «SonarQube» с использованием плагина «SonarQube 1C (BSL) Plugin» и настройке инструмента анализа кода «Sonar-Scanner».
Чтобы иметь возможность запустить сервер проверки SonarQube в любом каталоге, следует настроить инструмент Sonar-Scanner по описанному ниже алгоритму:
- Скачайте архив службы по ссылке из раздела «Необходимые компоненты» Извлеките файлы из архива; каталог должен иметь подобный вид:
- Добавьте переменную окружения типа %PATH% со ссылкой на каталог bin (это делается для того, чтобы можно было запускать службу Sonar-Scanner из любого каталога):
- Установка параметров клиентской части анализа (Sonar-scanner) производится через установку переменной среды «SONAR_SCANNER_OPTS».
Пример указания (для Windows, Java 8):
sh set SONAR_SCANNER_OPTS=-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xmx2G Пример указания (для Windows, Java 9+):
sh set SONAR_SCANNER_OPTS=-Xmx2G
- Настройте антивирус для увеличения производительности анализа
Каталоги «%USERPROFILE\.sonar» и подкаталог «.scannerwork» добавьте в исключения антивируса. Подкаталог «.scannerwork» автоматически создается в рабочем каталоге проекта
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и подтверждаете что ознакомились с нашей политикой политикой конфиденциальности в области персональных данных, а также с текстом согласия на обработку персональных данных
- Развертывание в собственной инфраструктуре
- Неограниченное количество проектов
- Написание собственных правил с помощью XPath
- Создание собственного профиля качества
- Единая аутентификация
- Премиальная поддержка
- Обновления в течении 1 года включено
- LDAP аутентификация
- 3 часа онлайн поддержки(skype/zoom)
- Онлайн чат (с 09:00 до 18:00)
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и подтверждаете что ознакомились с нашей политикой конфиденциальности в области персональных данных, а также с текстом согласия на обработку персональных данных
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и подтверждаете что ознакомились с нашей политикой конфиденциальности в области персональных данных, а также с текстом согласия на обработку персональных данных
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и подтверждаете что ознакомились с нашей политикой конфиденциальности в области персональных данных, а также с текстом согласия на обработку персональных данных
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и подтверждаете что ознакомились с нашей политикой конфиденциальности в области персональных данных, а также с текстом согласия на обработку персональных данных и договором оферты
Воспользуйтесь калькулятором и табличкой, которую мы подготовили для Вас по данной ссылке и убедитесь в преимуществах нашего продукта
Как только программист поместил свой код в центральный репозиторий, SonarQube получает оповещение о данном событии и запускает анализ качества кода. Автор изменений получает список задач на исправление, если в процессе проверки выявлены замечания
Релиз-менеджер, руководитель проекта и заказчик, используя метрики, всегда видят детальную информацию о состоянии проекта до официального выпуска релиза и развертывания в продуктив. Следовательно, принимаемое ими решение о выпуске релиза конфигурации 1С становится осознанным.
Знакомая всем ситуация: поддерживать систему стало сложнее, чем «переписать все с нуля». Понятие «технического долга» определяет количество времени, которое нам потребуется, чтобы привести систему в идеальное состояние. Как подсказать команде, где нужно приложить усилия по повышению качества продукта? Нужно применять анализатор кода и управлять процессом накопления технического долга.
Для владельца продукта и руководителя проекта не так важно, сколько проблем в коде имеется на данный момент, как то - растет ли количество проблем с течением времени. Куда движется команда? Порождает ли она еще больший хаос в коде? Постоянный анализ качества позволяет отследить момент, когда решения, принятые "на скорую руку" начинают утяжелять сопровождение системы
ROI (return on investment) - финансовый коэффициент, показывающий уровень доходности или убыточности бизнеса с учетом объема сделанных в него инвестиций
Алгоритм расчетов
ROI (return on investment) - финансовый коэффициент, показывающий уровень доходности или убыточности бизнеса с учетом объема сделанных в него инвестиций.
Стоимость 1 часа программистов/разработчиков
Давайте оценим стоимость часа работы разработчика/программиста и величину потерь компании при отвлечении разработчика.
Итак, работа программиста (впрочем, как и практически любого другого ведущего специалиста) приносит в среднем в 5 раз больше денег, чем тратится на оплату его труда (на самом деле, в зависимости от ситуации, от 2 до 10 раз).
Что это означает на самом деле? Если по какой-то причине программист не занимался разработкой, скажем, один час, тогда его работодатель понес убыток на сумму, эквивалентную не одному, а 5 часам работы (в 5 раз больше). K1=5 (ч). На стоимость рабочего часа программиста влияет также и тот факт, что он не программирует все 8 часов в день. Цифра, близкая к реальности — это 5 часов.
Давайте теперь рассчитаем, что означает для компании выпадение программиста с зарплатой 120 000 рублей из рабочего процесса на 1 час. Стоимость 1 часа работы программиста 120 000/160=750 руб. (160 ч = 40ч * 4недели). Недополученная прибыль компании при это 750 * 8 = 6000 руб (за 1 ч). Это и есть реальная стоимость 1 часа программиста.
Также много времени отнимает отличная и полезная практика «код-ревью», когда разработчик изучает код другого разработчика и помогает усовершенствовать этот код. Будем считать, что SonarQube 1C (BSL) Plugin экономит 4 часа программиста за одну неделю, выявляя проблемные участки кода вместо него.
В году 52 недели. В год «SonarQube 1C (BSL) Plugin» экономит следующее количество часов настоящей работы программиста: 4 * 52 = 208 часов. Соответственно, применение «SonarQube 1C (BSL) Plugin» одним программистом с зарплатой в 120 000 рублей будет возвращать бизнесу в год: 6000 * 208 = 1 248 000 руб.
Используя «SonarQube 1C (BSL) Plugin», команда из 5 человек способна не тратить время на поиск и исправление проблем в коде, а выполнять другую полезную работу на сумму 6 240 000 руб.
Для калькулятора ROI мы составили формулу:
ROI = N * (P / 160) * 8 * 208, где
P - зарплата программиста, N - число программистов.
- Верхняя строка: число программистов в команде.
- Левый столбец: зарплата разработчиков.
Если сравнить полученные в таблице значения со стоимостью покупки и развертывания плагина непрерывного анализа кода «SonarQube 1C (BSL) Plugin» на собственном сервере в размере 780 000 рублей (на облачном сервере - 40 000 рублей), экономическая выгода очевидна.
Читайте также: