(3) ну, например, чтобы:
- не настраивать ответственных по объектам метаданных в АПК: SonarQube сам определит ответственного за косячный код по git blame;
- разделить ошибки на legacy и привнесённые в новом коде, старый код не трогать, а сосредоточиться на исправлении новых косяков;
- видеть ошибки АПК в контексте окружающего кода, а не только модуль и номер строки;
- ускорить отображение отчётов;
- получать постоянные ссылки на ошибки, чтобы взять их на контроль и добиться исправления.
5.
Vladimir Litvinenko
07.07.19 23:46 Сейчас в теме
(4) Вы можете делать коммиты, связанные с обновлением типовых конфигураций (обновлением БСП или переходом на новую версию типовой конфигурации) от имени специально выделенного пользователя. Для этого достаточно перед коммитом указать в качестве e-mail автора служебный или свой второй e-mail. Тогда изменения типовой конфигурации привяжутся не к тем пользователям, под которым ведется регулярная разработка.
В этом случае разработчики получат возможность видеть и исправлять только свои ошибки. В общем случае вы будете видеть и ошибки типовой, но в этом нет ничего плохого. Их всегда можно будет отбросить на основании авторства изменений.
Если вы пользуетесь АПК, то ситуация будет аналогична: если Вы дорабатываете типовой модуль и хотите его проверить после доработки, то в результаты его проверки попадет и типовой код и Ваш. АПК позволяет фильтровать объекты конфигурации, подлежащие проверке, а не части модулей. При использовании возможностей git как раз появляется возможность проверять только внесенные в модуль изменения в привязке к авторам.
(12) На скриншоте тестовый проект, где ~800 ошибок, был проверен только в рамках статьи.
Во вложении метрики самописного проекта не на БСП, над который сейчас ведутся работы по улучшению качества кода (этот же скриншот есть в статье).
Если смотреть тренд количества ошибок, дублирования кода - то их количество со временем уменьшается.
Пока решил проблему изменением формата:
1. в файле acc.properties изменить:
acc.format=genericissue
2. в файле sonar-project.properties изменить:
sonar.externalIssuesReportPaths=acc-generic-issue.json
(114) Еще единая документация, где описаны многие нюансы установки/использования СонарКуб, в т.ч. первичный запуск, настройка описания интеграций, настройка для CI
за 70 страниц текста :)
(220) Есть идея о написании сравнения платного и опенсоурс проекта по анализу исходного кода 1С (плюсы и минусы каждого из решений). Скорее всего в ближайшее время это сравнение появится.
Хорошая статья, подробная.
В Сонаркубе меня смущает то, что путь файла показывается не полностью (на скрине обвел красным).
Из имени файла понятно, что это модуль какой то формы. А какой? Это можно было бы узнать по полному пути файла, но я не нашел способа его посмотреть.
(96) Под это был плагин для хрома от Валерия Максимова, но по моему он не работает в 7.9 =( Тоже страдаю от этого. Толи в 7.7, толи в 7.8 была кнопка справа вверху в ней было видно. Или сонаровцы починят обратно, или надежда на комюнити.
Когда читаю статьи про все эти новые технологии, то после прочтения пары абзацев начинает мутить. Можно сказать прям укачивает как на корабле. Все эти - "скачайте там", запустите такой скриптик, тут настройка, там настройка. 90% всякой мути и 10% смысла. Это не претензия автору. Сегодня я хотя бы до смысла дошел.
На данный момент, как я понял, плагин содержит 35 правил. Планируется ли включить все проверки стандартов 1С? Сейчас, получается, необходимо использовать выгрузку из АПК.
(106) Разумеется планируется. И не только стандартов 1С. Проект OpenSourse идеи и реализации приветствуются. Проверки реализуются не в самом плагине к SonarQube, а в bsl-language-server(см. ссылку в сообщении Олега), в котором проверки это только одна функциональность.
Но фоновое задание данные не обрабатывает, в статусе отображается ошибка:
Подробности Об Ошибке
Подробности Об Ошибке
java.lang.IllegalStateException: Unrecoverable indexation failures: 1 errors among 1 requests
at org.sonar.server.es.IndexingListener$1.onFinish(IndexingListener.java:39)
at org.sonar.server.es.BulkIndexer.stop(BulkIndexer.java:122)
at org.sonar.server.measure.index.ProjectMeasuresIndexer.doIndex(ProjectMeasuresIndexer.java:158)
at org.sonar.server.measure.index.ProjectMeasuresIndexer.indexOnAnalysis(ProjectMeasuresIndexer.java:82)
at org.sonar.ce.task.projectanalysis.step.IndexAnalysisStep.execute(IndexAnalysisStep.java:45)
at org.sonar.ce.task.step.ComputationStepExecutor.executeStep(ComputationStepExecutor.java:81)
at org.sonar.ce.task.step.ComputationStepExecutor.executeSteps(ComputationStepExecutor.java:72)
at org.sonar.ce.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:59)
at org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:81)
at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.executeTask(CeWorkerImpl.java:209)
at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.run(CeWorkerImpl.java:191)
at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:158)
at org.sonar.ce.taskprocessor.CeWorkerImpl$TrackRunningState.get(CeWorkerImpl.java:133)
at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:85)
at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:53)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Добрый день!
Есть инструкция под linux ? Может есть чат где-нибудь на github?
Второй день бьюсь с тем чтобы просто поднять сервис сонара.
Суть проблемы заключается в том, что после подстановки параметров на те, которые указаны у вас, он перестает стартовать.
В варианте из "коробки" запустить удалось, но дальше не хочет...
Замечания по выгрузке из АПК (Windows Server):
Обработка не работает и просто выкидывала. После чего я решил посмотреть код и по этому поводу замечания:
1) Лучше указать полный путь к файлам в acc.properties
Иначе обработка будет лепить вместо "\" вот так "/" на Windows.
2) Важно! projectKey - это наименование конфигурации в АПК. Об этом тоже стоит сказать.
(132) Спасибо за замечания!)
От себя хочу еще добавить, что скрипт acc.bat в статье запускается из каталога project1c и поэтому можно не указывать абсолютные пути.
P.S.
п. 2 - в статье так и написано: "projectKey - это наименование конфигурации в АПК". Можно конечно скриншотом дополнить.
(133) Я бы не писал если бы все было хорошо :)
Проблема в том, когда в обработке стоит относительный путь, то при построении полного пути получается вот такой путь: C:/sonar/project1c\src и естественно обработка не выгружает ничего из АПК.
Вообще, возникло странное ощущение от SonarQube.
С одной стороны все круто, с другой нет кучи того, что есть в том же АПК.
И наоборот в АПК нет того, что есть в сонаре.
Кстати, написал в ИжТиСи с просьбой прокомментировать почему в стандартах 1С есть ограничение на 120 символов в строке, а в АПК такой проверки нет. Они ответили и оказалось, что эта проверка закомментирована. Чтобы ее включить необходимо:
Для включения проверки на длину строки Вам необходимо раскомментировать алгоритм в правиле "Перенос выражений":
Настройка -> Правила -> в списке найдите правило "Перенос выражений".
В поле "Алгоритм" раскомментируйте стр.57-65.
Использовать сразу два продукта нелогично и не совсем верно, поэтому для себя приняли решение остаться на АПК и добавить туда те проверки, которые есть в SonarQube. Интересно никто таким не заморачивался?
(142) Именно количества диагностических проверок и не хватает. Во всем остальном понравилось все кроме краткого пути и не понятно в каком файле искать.
Но если выбирать между АПК и сонаром, то на данный момент это пока АПК. Возможно в будущем что-то изменится.
Кстати, а не думали о том, что бы как-то адаптировать использование проверок АПК и перебросить их в сонар каким-то автоматическим способом (например, используя oscript) запускать оттуда?
Т.е. грубо говоря, сделать импорт проверок.
(144) Я это понял и сделал так как написано. Речь о другом.
Зачем использовать два продукта, в принципе?
Если бы в сонаре были импортированы все проверки из АПК, то необходимости в АПК вообще бы не было.
(146) Под пивко, да еще и в пятницу ;)
Не мужики, вы молодцы. Смотришь на таких энтузиастов и думаешь, вот откуда у них столько свободного времени на разработку подобных инструментов?
С другой стороны интересно почему сама 1С не финансирует подобные работы. Очень достойно и перспективно ведь.
(147) Сейчас планируется сделать импорт описаний правил в sonarqube из АПК. Это даст возможность "не отходя от кассы" смотреть описание правил и иметь ссылки на стандарты ИТС. Что касаемо "А зачем использовать два продуктива?" - можно 1С: АПК упаковать в docker контейнер и запускать в CI забыв о его существовании в принципе.
(148) (149) А вы не сталкивались с такой ошибкой? (см вложение)
Если не импортировать из АПК все нормально, а если включить в настройках sonar-project.properties
Добрый день!
Попробовал на своем компе sonarqube. jvm в памяти разрослась до 4Гб. От обилия своппинга всё встало. Буду просить у руководства виртуальный сервер. Какой минимально сервер нужен для сонара? ОС windows style.
Сколько ориентировочно времени занимает проверка, например ERP?
Планирую проверять доработанную УХ-у и переработанную бухгалтерию.
(152) Когда я проверял УХ 3, то для работы сканера потребовалось 20Гб оперативы. Сонар же был на машине с 16Гб с настройками из этой статьи. То есть сканер запускался с другой машины. Если вырезать перед анализом регл. отчетность, то и 6Гб должно хватить на сканер.
(155) Спасибо, получилось!
Теперь, правда, при выполнении скрипта Check.bat возникает множество предупреждений. Нигде не могу найти, где в SonarCube настраивается путь к каталогу проекта. Как это исправить?
Также потребовалось в файле sonar-scanner.properties прописать абсолютный путь к проекту и путь к базовому каталогу - без этого в среде ОС Windows сканер отказывался работать:
Подскажите пожалуйста!
При проверке конфигурации возникает ошибка:
ERROR: Error during SonarQube Scanner execution
java.lang.OutOfMemoryError
Caused by: java.lang.OutOfMemoryError: Java heap space
При этом указаны следующие параметры использования памяти:
SONAR_SCANNER_OPTS=-Xmx8g
В параметрах java стоит: -d64 -Xmx10G
В процессе работы java съедает не более 5Gb. Конфигурация не слишком большая (5460 проверяемых файлов).
94 процента проверки проходит за 15 минут. Потом еще 3% обрабатывается в течение часа, после чего и вываливается ошибка.
Что нужно перенастроить чтобы процесс проверки завершался без ошибок?
(166) Конфигурация типовая? Если да - можно исключить типовые отчеты. Или попробуйте при запуске сканера указать больше озу: SONAR_SCANNER_OPTS=-Xmx10g
(168) Конфигурация не типовая. На сколько я понял в сам Сонар встроена своя Java или что-то типа того. Во всяком случае изменение параметров через интерфейс Configure Java результатов не дал. Получилось реализовать только добавив в файл check.bat следующую строку:
SET SONAR_SCANNER_OPTS=-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xmx10g
(221) Да, ест. Но я тогда не понял зачем сонар куб. Если просто из за веб интерфейса и графиков, то мое мнение это того не стоит. Мне проще автоматизировать АСС. Или же связать АСС TeamCity или jenkins.
Я в рамках статьи поставил сонар куб, да он красив и приятен, но его проверки не полные. Их очень мало. Я ни в коем случае не хочу обидеть разработчиков, работа проделана большая.
Если вы можете сказать чем именно можем помочь движок сонар куб, то буду признателен. Я его смотрел совсем не долго. Единственное что я помню это график изменения качества.
(226) Для меня Sonarqube дает следующие возможности по сравнению с чистой АПК:
* Оценивать динамику изменения показателей проекта. В случае срабатывания порогов качества принимаются соответствующие мера;
* Анализировать замечания по авторам (разработчикам);
* Удобство просмотра замечаний (прямо в коде с удобными фильтрами);
* Рассылка о состоянии проекта.
1. Редактирую настройки согласно статьи.
2. Запускаю крипт СтартСонар
3. Процессор съедается на 99% (ай пятый).
4. Память съедается почти вся (8 гб!)
5. Вываливается ошибка - не смогло аллоцировать что-то в районе 4 гб памяти.
(177)
Немного упрощаем настройки распределения памяти для запуска SonarQube. Допустим у вас 8 гб ОЗУ на компьютере. Но вы не хотите более 4 гб выделить под SonarQube. Расчет распределения памяти идет из следующего алгоритма.
Для CE выделяем половину доступной памяти, то есть 2 гб:
(178) Отлично, спасибо!
Именно с такими настройками не заработало, выдало тоже какую-то ошибку про память, но главное, что я понял смысл этих буковок, заработало вот так:
Всем привет.
А никто не реализовал "Рассылка результатов проверки кода ответственным / виновникам замечаний"?
Я так понимаю это должно происходить из SonarQube? Сами настройки на отправку сделал почты, тестовое письмо отправляется, а вот как сделать рассылку, нигде таких настроек не нашёл.
(183)Спасибо! В настройках пользователя включил уведомления, письма ему приходят если другой пользователь оставляет комментарии или назначает на него повторно замечания, но самое нужно чего хотелось бы это после завершения сонар-сканера в случае ошибок происходила рассылка. Сопоставления пользователя из гитлаба успешно попадают в сонаркубэ и назначаются, но рассылка не происходит (
(185)Так и делал, рассылка работает если уже есть не пустой проект и происходят какие то изменения кода и появляются ошибки. НО если проект ещё не создан и происходит его создание через сонар-сканер или даже если изначально будет создан пустой через браузер и потом сонар-сканер, то никакой рассылки не происходит, не смотря на то, что есть код и ошибки и пользователи успешно сопоставляются и назначаются! И ещё самое интересное, если я создаю новый объект в конфе, допускаю в нем ошибку обновляю это в существующий проект и тут не происходит рассылка, а вот если я ещё раз, в этом уже созданным объекте сделаю ошибку и выгружу, тогда все четко - приходит письмо. Это никуда не годиться, все это баловство не доработанное ) Или может ещё что то, где то настроить? А плагин 1C (BSL) пропускает случайные слова? символы в коде, захочу написать например по среди кода "впапрпвпвапв" так он ничего не скажет, проверку код пройдёт, но работать не будет ))
А что quboo лучше? На начальной странице уже написано beta
(186) Создайте проект с ключом до первого анализа через sonar-scanner. По поводу первой ошибки в новом объекте - там проблемы у нас замечено не было пока.
Quboo - да, он бета. Удобно работать с замечаниями и выгружать их в какую то другую структуру.
По поводу "по среди кода "впапрпвпвапв"" - это стат анализ. Пока проверки на корректные имена объектов нет, есть проверка в этом направлении - пропущенная ";".