SonarQube常用参数

SonarQube常用的配置参数

无论是使用Maven sonar插件还是Sonar scanner,以下这些常用参数都是通用的。参数摘抄自Analysis Parameters | SonarQube Docs,为了避免翻译引起的歧义,所以参数直接采用官方文档的英文原版内容。

KeyDescriptionDefault
sonar.host.urlthe server URLhttp://localhost:9000
sonar.projectKeyThe project's unique key. Allowed characters are: letters, numbers, -, _, . and :, with at least one non-digit.For Maven projects, this defaults to <groupId>:<artifactId>
sonar.projectNameName of the project that will be displayed on the web interface.<name> for Maven projects, otherwise project key. If not provided and there is already a name in the DB, it won't be overwritten
sonar.projectVersionThe project version.<version> for Maven projects, otherwise "not provided"
sonar.loginThe authentication token or login of a SonarQube user with Execute Analysis permission on the project.
sonar.sourcesComma-separated paths to directories containing main source files.Read from build system for Maven, Gradle, MSBuild projects. Defaults to project base directory when neither sonar.sources nor sonar.tests is provided.
sonar.testsComma-separated paths to directories containing test source files.Read from build system for Maven, Gradle, MSBuild projects. Else default to empty.
sonar.coverage.jacoco.xmlReportPathsPath to JaCoCo XML coverage reports. Path wildcards are supported (see above).
sonar.exclusions不需要执行检查的源文件,支持通配符,可以用逗号连接多个路径。
sonar.test.exclusions不需要执行检查的测试源文件,支持通配符,可以用逗号连接多个路径。
### SonarQube API 的集成与使用指南 SonarQube 提供了丰富的 RESTful API 接口,用于支持自动化分析、数据检索、配置管理以及与其他系统的集成。这些接口可以用于开发插件、实现自定义报告、与 CI/CD 工具深度集成或构建内部工具链。 #### 1. **获取 SonarQube API 文档** SonarQube 官方提供了完整的 API 文档,可以通过以下方式访问: - 访问本地部署的 SonarQube 实例,在浏览器中打开 `http://<your-sonarqube-server>/web_api`。 - 页面中列出了所有可用的 API 模块和端点,并附带详细的请求参数、响应示例及权限要求。 例如,获取项目列表的 API 为 `/api/projects/search`,可以通过如下命令调用: ```bash curl -u <your-token>: http://localhost:9000/api/projects/search ``` 其中 `<your-token>` 是通过 SonarQube 用户账户生成的 API Token [^3]。 #### 2. **API 身份验证** SonarQube 支持多种身份验证方式: - **Basic Auth**:使用用户名和密码进行认证(不推荐用于生产环境)。 - **API Token**:推荐方式,用户可在账户设置中生成 Token,用于替代密码进行安全认证。 - **OAuth2 / LDAP / SSO 集成**:适用于企业级身份验证需求。 生成 API Token 的路径为:`User > My Account > Security > Generate Token`。 #### 3. **常用 API 示例** ##### 获取项目信息 ```bash GET /api/projects/search?projects=my_project_key ``` 返回指定项目的详细信息,如名称、键值、创建时间等 [^3]。 ##### 触发代码分析任务 使用 `POST /api/ce/submit` 接口提交一个新的分析任务: ```bash curl -u <your-token>: -X POST "http://localhost:9000/api/ce/submit?projectKey=my_project_key&projectName=MyProject" ``` ##### 查询质量门状态 通过 `/api/qualitygates/project_status` 获取指定项目的质量门状态: ```bash GET /api/qualitygates/project_status?projectId=your_project_id ``` 此接口常用于 CI/CD 中判断是否通过质量门禁 [^1]。 #### 4. **与 Jenkins 集成中的 API 使用** 在 Jenkins Pipeline 中,除了使用 `withSonarQubeEnv` 插件触发分析外,也可以直接调用 SonarQube API 来查询分析结果或质量门状态。例如,结合 `sh` 或 `httpRequest` 步骤发起 API 请求以获取最新分析的状态,并决定是否继续部署流程。 #### 5. **Python 客户端库的使用** 为了简化 API 的调用过程,可以使用现成的 Python 库,例如 `python-sonarqube-api`。该库封装了常用的 API 方法,提供更友好的接口进行操作。 安装方式: ```bash pip install python-sonarqube-api ``` 使用示例: ```python from sonarqube import SonarQubeClient sonar = SonarQubeClient(server="http://localhost:9000", token="<your-token>") projects = sonar.projects.search_projects() for project in projects: print(project['name'], project['key']) ``` 此库支持项目管理、质量配置、规则查询等功能,极大提升了开发效率 [^3]。 #### 6. **开发插件时的 API 使用** SonarQube 允许通过插件扩展其功能,插件开发过程中可利用核心 API 进行规则注册、度量指标计算、页面渲染等操作。插件通常基于 Java 开发,需继承 `org.sonar.api.Plugin` 类并实现扩展点。 例如,添加一个自定义规则可通过扩展 `RuleDefinition` 接口完成: ```java public class MyCustomRulePlugin implements Plugin { @Override public void define(Context context) { context.addExtension(MyRuleDefinition.class); } } ``` 插件打包后,将 `.jar` 文件放入 `extensions/plugins` 目录并重启 SonarQube 即可生效 [^4]。 #### 7. **与 GitLab CI 的集成** 除了 Jenkins,SonarQube 也可以轻松集成到 GitLab CI 中。只需在 `.gitlab-ci.yml` 文件中添加分析步骤: ```yaml sonarqube-check: image: maven:3-jdk-8 script: - mvn sonar:sonar -Dsonar.login=$SONAR_TOKEN ``` 其中 `$SONAR_TOKEN` 是在 GitLab 项目变量中配置的 API Token [^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值