创建Sonarqube项目

Sonarqube (nee Sonar)是炸弹。 不必每天检查一次,但是如果您对质量很认真,则可以在Sprint计划期间(如果不是每周一次)对其进行检查。

nemo.sonarqube.com上查看示例项目,例如OpenJPA ,以了解可用的信息。 您可能首先需要专注于特定组件,例如OpenJPA JDBC 。

作为开发人员,我对“问题”(主要是FindBugs和Squid)和“单元测试覆盖率”最感兴趣。 作为一名架构师,我最感兴趣的是“包装缠结指数”和“复杂性” –前者是对封装和去耦进行适当衡量的方法,后者是对可维护性进行衡量的方法。

重要的是要用适量的盐查看这些数字。 他们提供了宝贵的见解,但需要一些经验才能充分利用它们。 这就是为什么要使这些信息远离Bean计数器很重要,因为Bean计数器会设置不合理的标准,例如在所有单元测试中90%的代码覆盖率。 (如果您拥有丰富的异常处理能力,但没有办法模拟将引发这些异常的类,那么这将是不可能实现的。只有傻瓜才能用代码健壮性换取更高的分数。)

安装Sonarqube

安装声纳法很简单。 它与自己的webapp服务器和嵌入式数据库捆绑在一起,因此您只需解压缩并运行启动脚本即可将其检出。 生产系统应使用真实的数据库。 支持多个数据库。

检查sonarqube网站以获取详细信息。

创建我们的项目

我承认–创建项目非常违反直觉。 简而言之,一切都是通过将数据推送到服务器来处理的,而无需先在声纳服务器上创建任何东西。 (您仍然需要在sonarqube服务器上创建管理员用户。)

实际上,这意味着我们添加了一个maven插件。 这是一个昂贵的插件,因此通常使用自定义配置文件,例如“声纳”(用于旧名称)。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <profiles>
        <profile>
            <id>sonar</id>
            <properties>
                <sonar.language>java</sonar.language>
                <sonar.host.url>http://chaos:9000</sonar.host.url>
                <sonar.jdbc.url>jdbc:postgresql://chaos/sonar</sonar.jdbc.url>
                <sonar.jdbc.username>sonar</sonar.jdbc.username>
                <sonar.jdbc.password>sonar</sonar.jdbc.password>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>0.6.4.201312101107</version>
                        <executions>
                            <execution>
                                <id>default-prepare-agent</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>default-prepare-agent-integration</id>
                                <goals>
                                    <goal>prepare-agent-integration</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>default-report</id>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>default-report-integration</id>
                                <goals>
                                    <goal>report-integration</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>default-check</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <configuration>
                                    <rules>
                                        <!-- implmentation is needed only for Maven 2 -->
                                        <rule implementation="org.jacoco.maven.RuleConfiguration">
                                            <element>BUNDLE</element>
                                            <limits>
                                                <!-- implmentation is needed only for Maven 2 -->
                                                <limit implementation="org.jacoco.report.check.Limit">
                                                    <counter>COMPLEXITY</counter>
                                                    <value>COVEREDRATIO</value>
                                                    <minimum>0.60</minimum>
                                                </limit>
                                            </limits>
                                        </rule>
                                    </rules>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

更新我们的项目

声纳插件很昂贵,因此不应将其作为例行程序的一部分运行。 一种常见的做法是安排在CI服务器(Hudson,Continuum等)上进行每晚构建。开发人员可能还希望在处理问题积压时执行计划外构建–一种解决方案引入其他较低优先级的情况并不罕见。问题。

源代码

使用此插件的示例项目位于https://github.com/beargiles/project-student [github]和http://beargiles.github.io/project-student/ [github页面]。

这个项目说明需要对我们如何解释结果有一定的认识。 我使用两种常见的做法-抛出内部异常而不是返回空值,并使用自定义的'UnitTestException'测试失败代码,而不会在日志中堆满无关的信息。 该代码看起来与可疑代码相同,因此已正确标记,但似乎没有办法消除鱿鱼警告。 (Findbugs有其自己的SuppressWarnings注释。)

总体而言,这仍然是一个巨大的胜利。

(更新:可以通过sonarqube的“质量配置文件”选项卡控制鱿鱼警告。这可用于将严重性级别降低为“信息”,但由于这些有时是合法警告,因此我不愿直接禁用这些测试。为什么我强烈希望使用每个实例的FindBugs SuppressWarnings注释而不是更改这些警告级别。)

参考: Invariant Properties博客中的JCG合作伙伴 Bear Giles 创建Sonarqube项目

翻译自: https://www.javacodegeeks.com/2014/02/creating-sonarqube-projects.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值