zoukankan      html  css  js  c++  java
  • Sonar安装使用篇

    sonar是一款开源的代码质量静态检查工具,可以支持很多种语言。使用sonar可以检查测试覆盖率,代码复杂度,重复代码,以及违反某些规则的不良的编程风格,等等。看一张截图:

    通过这样的一张图表,就可以清楚看出来当前项目的健康状况。记录下你的技术债务。除了简单的记录下各个指标的值,还可以自定义一些alert,用以当某项指标低于或者高于某个阈值的时候给出报警。如上图就有一个例子,我设置了测试覆盖率不能小于50%,否则就会显示这样的红色的警告。

    不但每次构建会有一次这样的snapshot,而且可以跟过去的指标对比,来发现代码质量是提升了还是下降了。

    当然上面看到的只是sonar功能九牛之一毛。等到自己装好了sonar之后可以再慢慢摸索。下面的部分我就讲解一下如何安装sonar,以及如何运行sonar来分析项目。

    安装sonar服务器

    首先要安装的是sonar的服务器,它提供了主要的代码分析,分析结果存储,分析结果展示的功能。从这里下载sonar服务器,目前最新的版本是3.2.1。解压完成之后就是一个sonar-3.2.1的文件夹。

    因为sonar需要使用数据库来存储代码分析的结果。因此我们需要告诉sonar数据存到哪里。打开sonar-3.2.1/conf/sonar.properties。该文件中已经预设了几种数据库的配置了,比如h2,mysql,oracle,postgresql等等。你可以使用任何一种,然后保持其他的配置是注释掉的。除了数据库地址的配置,还需要配置用户名密码,这个是不分数据库的,单独列出。我使用的是mysql,配好之后的样子是这样的:

    sonar.jdbc.username:                       root
    sonar.jdbc.password:
    ..... sonar.jdbc.url: jdbc:mysql:
    //localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

    关于其他的配置项,可以自己参考sonar.properties文件。

    我使用的数据库名字是sonar,所以需要先在mysql中创建该数据库,然后运行bin目录下适合你机器的那个文件夹里的sh文件即可。我使用的mac,我的启动命令如下:

    bin/macosx-universal-64/sonar.sh console

    启动之后,可以在命令行中看到它会自动做一些DB migration,把该建的表建好。然后就可以访问http://localhost:9000/了,sonar已经在那里等着你了:)

    使用sonar分析你的代码库

    好了,现在我们有一个运行着的sonar服务器了,如何用它来检测我的代码呢?

    Native Way

    一个答案是你还需要下载一个叫做sonar-runner的东西。从这里下载。解压后得到一个sonar-runner的文件夹。然后把bin/sonar-runner这个可执行文件添加到PATH里面,这样就可以在任何一个代码库下面运行sonar分析了。要分析一个代码库,首先需要在你的代码库根目录创建一个sonar-project.properties文件,比如这样:

    # required metadata
    sonar.projectKey=my:project
    sonar.projectName=My project
    sonar.projectVersion=1.0
     
    # path to source directories (required)
    sonar.sources=srcDir1,srcDir2
     
    # path to test source directories (optional)
    sonar.tests=testDir1,testDir2
     
    # path to project binaries (optional), for example directory of Java bytecode
    sonar.binaries=binDir
     
    # optional comma-separated list of paths to libraries. Only path to JAR file and path to directory of classes are supported.
    sonar.libraries=path/to/library.jar,path/to/classes/dir
     
    # Uncomment this line to analyse a project which is not a java project. 
    # The value of the property must be the key of the language.
    sonar.language=cobol
     
    # Additional parameters
    sonar.my.property=value

    然后在项目的根目录运行sonar-runner即可。运行完之后就可以在http://localhost:9000/上面看到分析的结果了。

    与其他构建工具的集成

    sonar对代码库的分析可以很好的被集成到例如ant,maven这些常见的构建工具中。具体的用法可以参考该页面进行配置。这里就不在赘述了。

    如果你看了上面的链接,你就知道在maven中只要使用mvn sonar:sonar这样的命令就可以对当前工程进行分析了,非常方便。更方便的是,在持续集成服务器中使用该命令同样可以进行代码分析,如果你在sonar中配置了某些alert,而且这些alert被触发了,那么mvn sonar:sonar这条任务就会失败,进而导致构建失败。这样你的CI也就可以很容易的和sonar结合在一起的。

    至此我们已经配置好了sonar服务器和sonar-runner,并且可以使用maven的plugin来运行sonar分析,甚至还可以和持续集成服务器很容易的集成在一起。看起来已经很有用了。但是sonar真正有用之处在于其可扩展性。你可以很方便的定制化你的sonar分析过程,加入新的指标,加入自定义的失败条件等等。我会在下一篇文章中做一些讲解。

  • 相关阅读:
    android driver开发常见的英文缩写
    简析quakeIII中利用链表实现的内存管理(1)
    链表的建立
    boson netsim5.31平台上组建交换式网络
    第六周周记
    价值观作业
    C语言的知识与能力的自评
    学习进度表
    Web表格部分内容
    线性表部分知识
  • 原文地址:https://www.cnblogs.com/cuiliqiang/p/2725146.html
Copyright © 2011-2022 走看看