SonarQube 6.7.5 - API для получения всех правил, примененных к проекту - PullRequest
0 голосов
/ 14 декабря 2018

Мне нужно скомпилировать каждое правило, примененное к каждому из проектов SonarQube.Я не мог найти прямой способ сделать это, поэтому я делаю следующее:

Получить проекты.У нас более 1000 проектов.(Не спрашивайте меня, почему ¯ \ _ (ツ) _ / ¯)

http://host/api/components/search?qualifiers=TRK

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

http://host/api/measures/component?componentKey=compKey&metricKeys=ncloc_language_distribution

После этого я получаю профили качества

http://host/api/qualityprofiles/search?project=projectKey&language=lang

Наконец, я получаю правила

http://host/api/rules/search?activation=true&qprofile=profile

Теперь, учитываяОгромное количество проектов и http запросов, этот процесс занимает много времени.Я скучаю по более простому способу сделать это?

1 Ответ

0 голосов
/ 14 декабря 2018

Чтобы узнать, какие правила были применены, вам необходим профиль проекта

  • *
  • , используемый для каждого языка
  • правил в каждом профиле

Есть несколько способов сделать это.Вы нашли один.Давайте посмотрим на других.

(я смотрю на более свежую копию SonarQube, но я считаю, что рассматриваемые API должны быть такими же.)

Я знаю, что профили, используемые всамый последний анализ проекта перечислены на главной странице.Используя консоль разработчика, я вижу, что эти данные приходят в ответ на вызов api/navigation/component.Этот веб-сервис помечен как внутренний, что означает, что вы, вероятно, не должны его использовать.Поэтому мы не можем перейти от проекта непосредственно к профилю качества.

Однако api/measures/component является , а не внутренним, и вместе с ним на первой странице запрашивается ncloc_language_distribution, помимо прочего.Это DISTRIB метрика, и она дает строки кода проекта для каждого языка.Для проекта, который я смотрю, возвращаемое значение равно "css=11473;java=235467;js=2549;ts=95516".Как видите, оттуда мы можем добраться до языков в проекте.Теперь давайте отложим это на мгновение.

Допустим, вы начали с получения списка профилей качества (api/qualityprofiles/search).Из этого вы знаете, какой профиль по умолчанию для каждого языка.Теперь используйте api/qualityprofiles/projects, чтобы получить список проектов, явно назначенных каждому профилю.Это, вероятно, также хороший момент для извлечения и локального хранения правил для каждого профиля.

Теперь вы можете перебирать свои проекты, смотреть на языки для каждого и выяснять, какие профили используются для каждого проекта.(Есть ли явное назначение профиля для этого языка? Нет? Тогда по умолчанию!) Затем вы можете извлечь свои правила для профиля из памяти, и вы получили свой список для проекта.

* пылируки *
просто!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...