Chinaunix首页 | 论坛 | 博客
  • 博客访问: 462860
  • 博文数量: 122
  • 博客积分: 1403
  • 博客等级: 中尉
  • 技术积分: 1668
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-11 13:31
文章分类

全部博文(122)

文章存档

2018年(5)

2017年(12)

2014年(15)

2013年(33)

2012年(4)

2011年(53)

分类: 敏捷开发

2018-09-06 23:19:32

SonarQube扫描源代码的方法

雷建锋

一、分析源代码综述

一旦成功安装了SonarQube平台,您就可以开始安装一个分析器并开始创建项目了。在第一次分析时,该平台会自动创建一个项目。如果您需要在第一个分析之前在项目上设置一些配置,那么您可以选择配置它。

1.       分析范围:文件类型和数据类型

SonarQube可以对20多种不同的语言进行分析。这种分析的结果将是质量度量和问题(编码规则被破坏的实例)。然而,分析的内容会因语言而异:

l  在所有语言中,blame)责备数据将自动从支持的SCM提供者中导入。GitSVN都是自动支持的。其他提供商需要额外的插件。

l  在所有语言中,都执行对源代码的静态分析(Java文件、COBOL程序等)

l  可以对某些语言执行编译后的代码的静态分析(Java中的类文件,c#dll文件等等。)

l  可以对某些语言执行对代码的动态分析

2.       无法识别的文件

        默认情况下,只有在分析过程中,才会将被语言插件识别的文件加载到项目中。例如,如果您的SonarQube实例上有JavaJavaScript插件,那么所有.Java.js文件都会被加载,但是.xml文件将被忽略。

3.       分析过程中

         在分析过程中,从服务器请求数据,分析文件,然后以报告的形式将结果数据发送回服务器,然后在服务器端异步分析。分析报告是排队的,并按顺序处理,因此很有可能在您的分析日志显示完成之后的一个短暂的时间内,更新后的值在SonarQube项目中是不可见的。但是,您将能够知道发生了什么,因为一个图标将被添加到项目名称旁边。鼠标悬停在上面以获得更详细的信息(如果您使用适当的权限登录,则会链接到链接)。


一旦处理完成,图标就会消失,但是如果分析报告处理失败了,那么图标将会改变:


4.       运行分析

         首先,您应该为将要分析的项目的语言安装插件,可以直接下载,也可以通过更新中心下载安装;然后,您需要选择一个分析方法。以下是可用的:

·        : 分析.net项目

·        : Launch analysis from Maven with minimal configuration

·        : Launch Gradle analysis

·        : Launch analysis from Ant

·        : Launch analysis from Jenkins

·        : 当其他分析程序都不合适时,从命令行启动分析。

注意,我们不建议在SonarQube分析运行的机器上运行防病毒扫描器,它可能导致不可预测的行为。

5.   FAQ

Q. 分析报错: java.lang.OutOfMemoryError: GC overhead limit exceeded. 这个应该怎么处理?

A. 这意味着您的项目太大或太复杂,以至于扫描器无法用默认的内存分配进行分析。要解决这个问题,您需要将较大的内存(使用-Xmx数值)分配给运行分析的进程,一些CI引擎可能会给你一个输入来指定必要的值,例如,如果你在Jenkins的工作中使用Maven构建步骤来运行分析。否则,使用Java选项来设置更高的值。请注意,这里省略了设置Java选项的细节,因为它们根据环境的不同而有所不同。

二、

1.       特性Feature

SonarQube Scanner是默认用于分析SonarQube项目的启动器。

2.       安装

1)       下载软件,并解压到 ,下载地址:

2)       更新全局设置以指向您的SonarQube服务器,打开并编辑编辑 /conf/sonar-scanner.properties:

    #----- Default SonarQube server

    sonar.host.url= #sonar.host.url配置的是实际sonar服务器的地址

3)    将 /bin 目录添加到系统环境变量"path"

4)    验证安装是否成功:打开cmd面板,输入sonar-scanner -h,出现下图,则表示环境变量设置成功:


如果您需要更多的调试信息,您可以添加 sonar.verbose 属性,添加命令行参数-Dsonar.verbose=true

3.       用法use

1)       在项目的根目录中创建一个配置文件: sonar-project.properties

\

需要注意的是,需要分析的源码在windows系统上的,路径分隔符需要将'\'替换为'/'。    

2)       按照官方文档设置配置文件时候, sonar scanner扫描报错“Please provide compiled classes of your project with sonar.java.binaries property”,解决办法是在sonar-project.properties

文件中增加一行

sonar.java.binaries=项目路径/target/classes


以下是一个实际项目的配置文件:

# must be unique in a given SonarQube instance

sonar.projectKey=game-of-life

# this is the name and version displayed in the SonarQube UI. Was mandatory #prior to SonarQube 6.1.

sonar.projectName=game-of-life

sonar.projectVersion=1.0

#sonar.language=java

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on #Windows.

# This property is optional if sonar.modules is set.

sonar.sources=.

 

# Encoding of the source code. Default is default system encoding

#sonar.sourceEncoding=UTF-8

sonar.java.binaries=C:/game-of-life-master/gameoflife-core/build/classes

3)       进行项目根目录,也即sonar-project.properties文件所在目录,运行命令sonar-scanner


4)       若分析成功,则出现如下界面:


5)       登录sonar服务器,会发现多了一个项目,即刚刚分析的项目。


6)       安全

任何授予执行分析权限的用户都可以进行分析。如果任何一个组没有被授予执行分析权限,或者SonarQube实例被保护(属性被设置为true),具有执行分析权限的用户的分析令牌必须通过 sonar.login属性提供。举例:: sonar-scanner -Dsonar.login=[my analysis token]



4.       故障排除troubleshooting

5.       Going Future




三、

特性

建议对Java Maven项目使用此分析器进行分析。

                                                           

先决条件

Maven 3.x

SonarQube已经完成

l  至少您的SonarQube服务器支持的最小版本的Java是在使用的(最新LTSJava 8

l  您希望分析的每种语言的语言插件都已安装

l  您已经阅读了

初始设置:全局设置

         编辑位于$ MAVEN_HOME / conf?/ .m2  settings.xml文件。有三个地方需要新增:1)本地仓库路径localRepository  2pluginGroup 3sonar配置。举例:

  D:/maven/repo  #替换成本地repo仓库

    

        org.sonarsource.scanner.maven

    

    

        

            sonar

            

                true

            

            

                

                

                    #替换成自己sonar服务器的实际RUL

                

            

        

     

分析一个Maven项目

分析一个Maven项目包括在pom.xml文件所在的目录中运行Maven目标:sonar:sonar

mvn clean verify sonar:sonar

  

# In some situation you may want to run sonar:sonar goal as a dedicated step. Be sure to use install as first step for multi-module projects

mvn clean install

mvn sonar:sonar

 

# Specify the version of sonar-maven-plugin instead of using the latest. See also 'How to Fix Version of Maven Plugin' below.

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.1.1170:sonar

举例:

          xmlns:xsi=""

          xsi:schemaLocation=" ">

D:/maven/repo

   

    org.sonarsource.scanner.maven

 


         sonar

        

             true

        

        

            

            

              

            

        

    

分析完成后,若分析成功,则会出现这样的界面


打开SonarQube系统,发现新项目已经体现在系统中的了


         要获得覆盖率信息,您需要在分析之前生成覆盖率报告。有关更多信息,请参阅

四、 五、其他

sonarlintpylint,与IDE结合使用非常好。



阅读(2584) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~