zoukankan      html  css  js  c++  java
  • 集成TFS Build生成与SonarQube获取代码分析结果

    软件项目在开发过程中,往往由于任务重、时间紧等原因忽略软件代码的质量和规范检查,只注重软件功能的开发和交付。等软件交付上线以后,由于代码质量导致的问题会耗费开发和运维人员的大量时间。研发表明,项目上线以后在生产环境中修复一个Bug,将耗费三倍于开发过程中修复该Bug所耗费的时间。由此可见,需要在开发过程中不断提高代码质量,避免潜在的问题,减少项目交付以后的技术负债。

    在软件开发过程中检测代码质量,持续集成构建无疑是最好的选择。本文建介绍如何利用TFS的持续构建与代码质量分析工具SonarQube之间的集成,实现实时分析代码质量,帮助开发人员在开发过程中提高代码质量。

    一、必备工具

    本文中作者使用了下列软件产品:

    - Microsoft Visual Studio Team Foundation Server 2015.1 https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx 

    - SonarQube 5.3 http://www.sonarqube.org/downloads/ 

    - SonarQube Scanner for MSBuild 2.0 http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner+for+MSBuild 

    - SonarQube C# Plugin http://docs.sonarqube.org/display/PLUG/C%23+Plugin 

    二、安装SonarQube

    这里介绍如何在Windows Server 2012上,使用SQl Server 2014数据库安装和配置SnoarQube服务器。如果你已经拥有了一个SonarQube服务器,则可以忽略这一章节。

    至于Team Foundation Server的安装,过程比较复杂,并不是本文关注的重点,你可以参考微软的官方文档https://msdn.microsoft.com/en-us/Library/vs/alm/TFS/setup/overview 安装和配置TFS服务器。

    下载和安装Java JDK

    SonarQube是一个基于Java的应用服务器,需要首先在服务器上下载和配置JDK http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 

    安装运行JDK以后,还需要做下面的几项配置:

    - 添加服务器环境变量JAVA_HOME, 内容为Java的安装目录。例如我这里的安装目录为C:Javajdk1.8.0_11

    - 在服务器环境变量Path中添加Java bin的目录,例如C:Javajdk1.8.0_11in

    下载SonarQube安装程序

    SonarQube是一个开源程序,可以从官网下载http://www.sonarqube.org/downloads/  我这里下载的是目前的最新版本5.3。
    下载以后建软件解压缩到服务器的本地文件夹中,例如我这里解压缩的目录为C:sonarqube-5.3。然后按照下面的步骤配置SonarQube服务器:

    1. 在SQL Server数据库中创建一个空的名称为sonar数据库,用于存储SonarQube的数据。

    2. 在SQL Server数据库中创建一个SQL Server账户sonar,密码sonar,并将该账户赋予上述数据库的dbowner权限,用于SonarQube服务器读取数据。

    3. 修改SonarQube服务器的配置文件

    修改配置文件:C:sonarqube-5.3confsonar.properties

    删除下面的代码行注释标志#,并填写访问数据库的账户和密码,

    sonar.jdbc.username=sonar

    sonar.jdbc.password=sonar

    删除下面的代码行注释标志#

    sonar.jdbc.url=jdbc:sqlserver://tfsdb;databaseName=sonar

    配置C Sharp插件

    下载SonarQube C# Plugin http://docs.sonarqube.org/display/PLUG/C%23+Plugin ,并将其复制到SonarQube的插件目录下:C:sonarqube-5.3extensionsplugins

    注意,在SonarQube服务器启动以后,这个目录会自动生成其他默认的插件文件,例如Java, Git, SVN等插件。

    启动SonarQube服务器

    可以通过命令行的方式启动SonarQube服务器,也可以将SonarQube服务器配置成服务的方式,让其跟随服务器自动启动。这里介绍命令方式启动SonarQube服务器。

    以管理员身份运行Windows命令行窗口,并导航到SonarQube服务器的启动目录:C:sonarqube-5.3inwindows-x86-64

    运行启动命令StartSonar.bat后,如果配置正确,你会看到下面的窗口。

    image

    Figure - 启动SonarQube

    此时打开浏览器,在地址栏中输入SonarQube的默认网站地址http://SonarServer:9000 ,你会看到下面的窗口

    image

    Figure – SonarQube默认首页

    使用系统的默认管理员账户admin/admin登录系统,就可以完成管理员的任何工作了。

    三、安装和配置TFS生成服务器

    配置vNext生成服务器

    可以通过TFS的XAML生成或者vNext生成,实现SonarQube的的代码分析。由于XAML是一种趋于淘汰的生成技术,这个示例中我们使用TFS最新的vNext配置SonarQube。首先需要按照下面的方法配置一台vNext生成服务器:

    SNAGHTMLc94c49

    Figure - 下载生成服务器配置程序

    image

    Figure - 以管理员身份运行配置程序ConfigureAgent.cmd,后面的截图略

    配置SonarQube Scanner Runner for MSBuild

    下载SonarQube Scanner for MSBuild 2.0 http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner+for+MSBuild,并执行下面的操作:

    1. 将文件解压缩到这个目录C:sonarqube-5.3in

    2. 在环境变量的Path中添加这个路径:C:sonarqube-5.3in, 确保在任意位置可以运行msbuild.sonarqube.runner.exe(如下图)

    image

    3. 修改配置文件C:sonarqube-5.3inSonarQube.Analysis.xml

    修改Runner的XML配置文件,填写访问SonarQube的账户和密码

    <Property Name="sonar.host.url">http://SonarServer:9000/</Property>

    <Property Name="sonar.login">admin</Property>

    <Property Name="sonar.password">admin</Property>

    四、配置生成定义

    为TFS的团队项目添加服务连接

    image

    Figure - 为团队项目添加Generic连接

    image

    Figure - 填写SonarQube服务器的连接信息

    在SornarQube中创建一个项目,映射TFS中的生成

    安装SonarQube的官方文档,需要在TFS生成定义中需要使用这里创建项目使用的项目名称密钥,以便生成任务将分析结果上传到SonarQube对应的项目中。

    但是在实际操作中发现,这一步是可以忽略的,TFS的生成任务会在SonarQube中自动创建对应的项目。

    image

    Figure – 在SonarQube中创建项目

    在生成定义中添加SonarQube for MSBuild任务

    注意任务的排列顺序,将Begin Analysis任务放在编译之前,将End Analysis任务放在测试之后。

    image

    Figure - 在生成任务中配置SonarQube的分析任务

    运行生成,查询SonarQube分析结果

    配置好生成定义以后,启动生成,可以看到MSBuild的生成任务已经将代码的分析结果发送到了SonarQube服务器上。

    image

    Figure - 生成运行结果

    image

    Figure – C#项目代码的分析结果

    至此,配置过程结束。

    http://www.cnblogs.com/danzhang/  ALM MVP 张洪君

  • 相关阅读:
    svn使用方法
    董事、执行董事、总裁、总经理
    华联、联华、世纪华联、百联
    声明式编程和命令式编程
    NodeJS中的require和import
    JSONP跨站访问
    Camera服务之--架构浅析
    HashMap实现原理分析
    设计模式解读之一: 策略模式
    Java6.0中Comparable接口与Comparator接口详解
  • 原文地址:https://www.cnblogs.com/danzhang/p/5205610.html
Copyright © 2011-2022 走看看