架构
- 分析器:分析代码,并保存分析快照到数据库
- 数据库:保存配置和代码分析快照
- 插件
- Sonar Server
- web server
- search server
- compute Engine server
集成方式
特性
- 显示与上一个版本的差异,可以使用previous_version指定
- 可以在Quality Gates中对New code的质量进行设置
- 前面分析的源代码、目录和文件级别的度量,等等在新的分析结束时自动删除
- Administration > General > Database Cleaner.中进行设置
Quality Gates
度量项目的整体情况,以判断其是否能够交付(在顶部导航栏中制定)
特性
- 针对新代码
- 质量控制条件必须使用差值
- 度量失败会进行通知
权限
- 任何用户(甚至是匿名用户)都可以访问Quality Gates
- 需要 Administer Quality Profiles and Gates权限才能change(create, edit or delete) Quality Gates
- project administrator能选择项目对应的quality gates规则
定义Quality Gates
需要组合一下条件
- measure
- comparison operator
- error value
例如
- measure: Blocker issue
- comparison operator: >
- error value: 0
表示No blocker issues.
Issues
- Issus:在代码分析后,每当一段代码违反编码规则时,
SonarQube提出的问题- 编码规则在quality profile中自定义
类型
- Bug
- Vulnerability :漏洞,可能会被攻击
- Codesmell :异味,令人疑惑的代码
严重程度
- BLOCKER:阻断,必须马上修复
- CRITICAL:严重,必须马上查看
- MAJOR:主要
- MINOR:次要
- INFO:提示
生命周期
- Open :SonarQube 自动设置,新建issues
- Confirmed :手动设置,严重issue
- Resolved :手动设置,下一个分析应该解决这个问题
- Reopened :SonarQube 自动设置,没有正确改正issues
- Closed :SonarQube 自动设置,关闭issues
决议(如何处理issues)
- Closed issues
- fixed
- removed
- Resolved issues
- False Positive
- Won’t Fix
工作流
- 关闭(status: Closed)
自动关闭issues的情况:修复issue => 决议:fixed
代码弃用:启用issues => 决议:removed
- 重开(status: Reopened)
手动标记fixed,但问题没有完全解决
新问题的标记
Sonar使用的标记算法依赖于报告问题所在行的内容散列(多行取第一行),根据散列值进行匹配,以识别历史问题。
issues的时间问题
取决于代码的最后修改时间,而不是首次发现的时间
自动issues分配
-
新的issues会分配给“最近提交的,且与Sonar进行关联的“提交者。仅限file级别的issues