我需要编译应用于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请求数量庞大,此过程将花费很长时间。 我是否错过了一种更简单的方法?
答案 0 :(得分:0)
要了解所应用的规则,您需要
有两种不同的方法可以解决此问题。您已找到一个。让我们看看其他人。
(我正在查看SonarQube的最新副本,但我认为所讨论的API仍应相同。)
我知道项目的最新分析中使用的配置文件已列在主页上。使用开发人员控制台,我看到该数据来自对api/navigation/component
的调用。该Web服务被标记为内部服务,这意味着您可能不应该使用它。因此,我们不能直接从项目转到质量配置文件。
但是,api/measures/component
不是内部的,并且首页还要求ncloc_language_distribution
。这是一个DISTRIB
度量标准,它提供了每种语言的项目代码行。对于我正在查看的项目,返回值为"css=11473;java=235467;js=2549;ts=95516"
。如您所见,从那里我们可以了解项目中的语言。现在,让我们搁置片刻。
假设您从获取质量概况列表(api/qualityprofiles/search
)开始。由此,您知道哪种配置文件是每种语言的默认配置文件。现在使用api/qualityprofiles/projects
获取显式分配给每个配置文件的项目列表。这可能也是在每个配置文件中检索和本地存储规则的好地方。
现在,您可以迭代您的项目,查看每个项目的语言并找出每个项目使用的配置文件。 (是否为此语言指定了明确的配置文件分配?否?然后是默认语言!)然后,您可以将每个配置文件的规则从内存中拉出,然后您便有了该项目的列表。
*除尘手*
简单!