我正在寻找SonarQube与FindBugs,PMD和Checkstyle插件的最佳实践.
对于下面的代码,sonarqube计算方法圈复杂度为9
String foo() {
if (cond1) return a;
if (cond2) return b;
if (cond3) return c;
if (cond4) return d;
return e;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,根据计算规则http://docs.sonarqube.org/display/SONAR/Metrics+-+Complexity,9的复杂性是正确的.因此该方法的复杂性是= 4(如果)+ 4(返回)+ 1(方法)= 9
如果我有一个退出点,这种复杂性可以降低.
String foo() {
String temp;
if (cond1) {
temp = a;
} else if (cond2) {
temp = b;
} else if (cond3) {
temp = c;
} else if (cond4) {
temp = d;
} else {
temp = e;
}
return temp;
}
Run Code Online (Sandbox Code Playgroud)
我相信这个代码比以前的版本更混乱,更难以理解,我觉得拥有返回保护条件的方法是一种更好的编程习惯.那么有什么理由可以考虑返回语句来计算圈复杂度?可以改变计算逻辑,使其不会促进单一退出点.
我有一个宁静的Web服务(JAVA),它必须接受JSON请求.我必须首先针对我拥有的JSON模式验证此JSON.我不确定什么是最好的JAVA库来再次验证JSON JSON模式.我使用了json-schema-validator -2.1.7库,但它并没有太大帮助.即使我认为我的JSON不是有效的JSON我也没有任何错误.
这是我用于json-schema-validator-2.1.7的代码
InputStream jsonSchemaInputStream = Assessment.class.getClassLoader().getResourceAsStream("Schemas/AssessmentMetrics.json");
ObjectMapper mapper = new ObjectMapper();
// Allows to retrieve a JSONSchema object on various sources
// supported by the ObjectMapper provided
JSONSchemaProvider schemaProvider = new JacksonSchemaProvider(mapper);
// Retrieves a JSON Schema object based on a file
JSONSchema schema = schemaProvider.getSchema(jsonSchemaInputStream);
// Validates a JSON Instance object stored in a file
List<String> errors = schema.validate(contents);
Run Code Online (Sandbox Code Playgroud) 官方文档http://docs.sonarqube.org/display/SONAR/Analyzing+with+Maven表示调用声纳的正确方法是:
mvn clean install -DskipTests=true
mvn sonar:sonar
Run Code Online (Sandbox Code Playgroud)
但没有说为什么。声纳如何工作?它需要编译类吗?那么为什么不呢mvn clean compile?或者它需要一个jar文件吗?那么为什么不呢mvn clean package?声纳插件到底是什么?
我正在尝试用Sonar 4.2分析我的JEE项目.这是一个使用Java和JS的多语言JEE项目.
我添加到Sonar 4.2的插件是:Java 2.1和JavaScript 1.6.
近日,声纳增加了多语言的分析,下面的文档,我已经去除了sonar.language从sonar-project.properties.但它仍然只分析Java.
我在Jenkins 1.555中使用Sonnar Runner 2.3.它在每次构建后分析项目.
我错过了什么吗?
编辑:sonar-project.properties:
# Required metadata
sonar.projectKey=myProjectKey
sonar.projectName=MyProject
sonar.projectVersion=1.0
# Path to the parent source code directory.
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional. …Run Code Online (Sandbox Code Playgroud) 我曾经在Android应用程序中搜索创建assets文件夹,我尝试过的解决方案 <App Name>/src/assets/fonts/
但是当我尝试在我的应用程序中使用ttf文件时,我有一个错误:
代码 :
mFace = Typeface.createFromAsset(mContext.getAssets(),"fonts/fontType.ttf");
Run Code Online (Sandbox Code Playgroud)
和错误:
无法制作原生字体
我不知道资产文件夹是否在好地方.
我已升级到SonarQube 5.2,当我尝试运行分析时,我得到以下错误.如果我尝试浏览错误消息中的URL,我会得到一个页面{"errors":[{"msg":""}]}.我正在使用sonar-maven-plugin 2.7.1(来自org.codehaus.mojo).在另一个线程中,有人建议检查Sonar项目是否实际上是项目而不是模块.我检查过了.声纳的日志显示:
127.0.0.1 - - [12/Nov/2015:12:07:56 +0000] "GET /batch_bootstrap/index HTTP/1.1" 400 49 "-" "Maven/3.0.5"
Run Code Online (Sandbox Code Playgroud)
我在MS SQL Server 2008 R2上运行.
注意:当我切换到内置的Db(h2),空,我没有得到错误(但我没有尝试过空的MS SQL Server).什么可能是错的?谢谢.
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7.1:sonar (default-cli) on project infra: Fail to execute request [cod
e=500, url=<...>/batch/project.protobuf?key=com.<XXXXXXX>.SOMETHING%3ASOMETHING]: Fail to download [<...>/batch/project.protobuf?key=<XXXXXXX>.SOMETHING%3ASOMETHING]. Response code: 500 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7.1:sonar (default-cli
) on project infra: Fail to execute request [code=500, url=<...>/batch/project.protobuf?key=<XXXXXXX>.SOMETHING%3ASOMETHING]
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at …Run Code Online (Sandbox Code Playgroud) 我按照这里的说明
我不使用Maven.
我的Jenkins作业输出说:12:32:33.951 INFO传感器JaCoCoSensor ... 12:32:33.961 INFO项目覆盖率设置为0%,因为没有转储JaCoCo执行数据:/ var/lib/jenkins/workspace/SeqGen/SeqGen/jacoco.exec 12:32:35.152 INFO传感器JaCoCoSensor完成:1201 ms
这是我的属性:
project.home=SeqGen
sonar.projectKey=com.skyboximaging:seqgen
sonar.projectName="SeqGen"
sonar.projectVersion=1.0
sonar.dynamicAnalysis=true
sources=src/java
tests=test/java
binaries=classes
sonar.jacoco.reportPath=jacoco.exec
sonar.jacoco.antTargets=test-with-coverage
Run Code Online (Sandbox Code Playgroud)
在Sonar服务器上,我将常规设置>代码覆盖率>代码覆盖率插件设置为jacoco
我对http://docs.codehaus.org/display/SONAR/Code+coverage+plugins上的文档感到非常困惑. 我对这句话感到特别困惑:"在声纳分析过程中,Sonar Jacoco插件将注意附加Jacoco代理JVM并启动单元测试."
据我所知,我的Ant目标没有被调用.Sonar Jacoco插件如何知道在哪里找到我的build.xml?
我究竟做错了什么?
我无法使用Ant将JaCoCo与声纳集成.这项任务非常新,并且是第一次集成.我经历过许多链接
我试图在另一个VM上显示结果,代码在我的VM中.获取与JDK6,VM相关的各种错误,并且无法分析我的包结构我需要在以上链接中为VM等定义任何特定的项目属性.我还想包括我的checkstyle,和findbugs一样工作就像魅力.只需要整合JaCoCo.任何信息都会有很大帮助.
如果发现我的描述不符合我的标记,请问
感谢帮助
我有1个用户到多个其他域并将其放在我的代码中:
用户类
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@Entity
@Table(name = "USUARIO")
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID_USUARIO",unique = true,nullable = false)
private Long id;
@NotBlank(message = "usuario.cadastro.nome.obrigatorio")
@Column(name = "NOME", unique = true, nullable = false,length = 100)
private String nome;
@Email(message = "usuario.cadastro.email.invalido")
@Column(name = …Run Code Online (Sandbox Code Playgroud) sonarqube ×8
java ×4
jacoco ×2
jenkins ×2
android ×1
ant ×1
hibernate ×1
java-ee ×1
javascript ×1
json ×1
jsonschema ×1
maven ×1
multilingual ×1
sonarqube5.2 ×1