sonar扫描普通JAVA执行,SonarQube扫描源代码的方法

SonarQube扫描源代码的方法

雷建锋

一、分析源代码综述

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

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

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

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

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

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

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

2.无法识别的文件

默认情况下,只有在分析过程中,才会将被语言插件识别的文件加载到项目中。例如,如果您的SonarQube实例上有Java和JavaScript插件,那么所有.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项目使用此分析器进行分析。

先决条件

l  Maven 3.x

l  SonarQube已经完成

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

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

l  您已经阅读了

初始设置:全局设置

编辑位于$ MAVEN_HOME

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

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系统,发现新项目已经体现在系统中的了

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

四、

五、其他

sonarlint和pylint,与IDE结合使用非常好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html的学习思维导图

转载于:https://www.cnblogs.com/lingdublog/p/6438088.html

php语言冒泡法,PHP实现冒泡排序算法的案例

PHP实现冒泡排序算法的案例发布时间:2020-10-23 17:39:38来源:亿速云阅读:84作者:小新这篇文章主要介绍PHP实现冒泡排序算法的案例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定…

线性代数分块矩阵求逆矩阵_单位矩阵属性(AI = A)| 使用Python的线性代数

线性代数分块矩阵求逆矩阵Prerequisites: 先决条件: Defining Matrix 定义矩阵 Identity matrix 身份矩阵 numpy.matmul( ) matrix multiplication numpy.matmul()矩阵乘法 In linear algebra, the identity matrix, of size n is the n n square matrix with one…

MySQL5.7.17的简单配置文件

#编译安装mysql5.7.17 [rootweb_1 data]# cat ../my.cnf [client]port3307socket/data/3307/mysql.sock[mysqld]user mysqlbasedir /usr/local/mysqldatadir /data/3307/dataport3307server-id 1socket/data/3307/mysql.sockcharacter-set-server utf8log-error /data/33…

cubic-bezier_带CSS中的示例的cube-bezier()函数

cubic-bezierIntroduction: 介绍: How many times have we come across the word function? Well, it would not be wrong to say a lot. The fact that functions are used in web development while developing a website or web page is very important. There…

php时间调用最简单的,PHP调用时间通过引用不可避免?

给定以下接口:interface ISoapInterface {public static function registerSoapTypes( &$wsdl );public static function registerSoapOperations( &$server );}以及以下代码:$soapProvider array( "FilePool", "UserList" );foreach( $soapProvi…

上手Caffe(一)

author:oneBite 本文记录编译使用caffe for windows 使用环境 VS2013 ultimate,win7 sp1,caffe-windows源码(从github上下载caffe的windows分支,下载解压之后,不要改变原有的目录结构,因为solution rebuild时会使用文件的相对路径…

使用JavaScript的图像识别游戏

Today we are going to develop a fully functional image recognition game using JavaScript. JavaScript is the best fit choice since it is a web-based game. The game is totally based on event handling and event objects. 今天,我们将使用JavaScript开发…

php 判断 in,tinkphp常用判断条件in、notin、between、AND、OR

越来越多的人使用thinkphp框架开发应用,容易上手开发周期短,接下来吾爱编程为大家分享一下tinkphp常用判断条件in、notin、between、AND、OR,有需要的小伙伴可以参考一下:in:{in name"Think.get.level" valu…

关于设置不同linux主机之间ssh免密登录简易方法

2019独角兽企业重金招聘Python工程师标准>>> 在linux日常中,经常会有ssh链接其他主机服务器的action,也学习过大家日常用配置ssh免密登录的方法。 小编今天在这里给大家介绍一种比较简单的配置linux主机ssh免密登录的方法。 两台主机的IP地址&#xff1a…

c语言指针++_C ++此指针| 查找输出程序| 套装1

c语言指针Program 1: 程序1&#xff1a; #include <iostream>using namespace std;int main(){int A 10;this* ptr;ptr &A;*ptr 0;cout << *ptr << endl;return 0;}Output: 输出&#xff1a; main.cpp: In function ‘int main()’:main.cpp:7:5: e…

java自定义线程池池,线程池使用及自定义线程池

一 案例引申编写代码同时只允许五个线程并发访问(以下文的函数为例子)private static void method() {System.out.println("ThreadName" Thread.currentThread().getName() "进来了");Thread.sleep(2000);System.out.println("ThreadName" Th…

long类型20位示例_Java Long类reverseBytes()方法与示例

long类型20位示例长类reverseBytes()方法 (Long class reverseBytes() method) reverseBytes() method is available in java.lang package. reverseBytes()方法在java.lang包中可用。 reverseBytes() method is used to returns the value generated by reversing the order o…

impala和mysql语法,impala CREATE TABLE语句

CREATE TABLE语句用于在Impala中的所需数据库中创建新表。 创建基本表涉及命名表并定义其列和每列的数据类型。语法以下是CREATE TABLE语句的语法。 这里&#xff0c;IF NOT EXISTS是一个可选的子句。 如果使用此子句&#xff0c;则只有在指定数据库中没有具有相同名称的现有表…

Guava翻译系列之EventBus

EventBus 类解析 当我们开发软件时&#xff0c;各个对象之间的数据共享和合作是必须的。 但是这里比较难做的是 怎样保证消息之间的传输高效并且减少各个模块之间的耦合。 当组件的职责不清楚时&#xff0c;一个组件还要承担另一个组件的职责&#xff0c;这样的系统我们就认为是…

Java PipedOutputStream close()方法与示例

PipedOutputStream类close()方法 (PipedOutputStream Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close this PipedOutputStream and free all system resources linked with this str…

Java二维数组谷电,java二维数组遍历的2种代码

二维数组遍历&#xff1a;思想&#xff1a;1.先将二维数组中所有的元素拿到2.再将二维数组中每个元素进行遍历&#xff0c;相当于就是在遍历一个一维数组第一种方法&#xff1a;双重for循环//遍历二维数组public class Traverse_a_two_dimensional_array {public static void m…

【转】MyEclipse快捷键大全

常用快捷键 -------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl1 快速修复CtrlD: 删除当前行 CtrlQ 定位到最后编辑的地方 CtrlL 定位在某行 CtrlO 快速显示 OutLine CtrlT 快速显示当前类的继承结构 CtrlW 关闭当…

Java整数类的compareTo()方法和示例

整数类compareTo()方法 (Integer class compareTo() method) compareTo() method is available in java.lang package. compareTo()方法在java.lang包中可用。 compareTo() method is used to check equality or inequality for this Integer object against the given Integer…

MATLAB元胞自动机报告,元胞自动机概述与MATLAB实现

什么是元胞自动机&#xff1f;元胞自动机(cellular automata&#xff0c;CA) 是一种时间、空间、状态都离散&#xff0c;空间相互作用和时间因果关系为局部的网格动力学模型&#xff0c;具有模拟复杂系统时空演化过程的能力。它能构建随时间推移发生状态转移的系统&#xff0c;…