使用sonar分析代码会泄露吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sonar分析代码会泄露吗相关的知识,希望对你有一定的参考价值。

  1. 不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
  2. 潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷
  3. 糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
  4. 重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方
  5. 注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
  6. 缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率
  7. 糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
  
参考技术A 下载sonar-runner:1.进入下载页面2.找...
1

下载完后,解压,将bin文件加入环境变...
2

配置文件,以java工程为例1.在工程根目...
3

分析啦,分析也是超级简单1.打开CMD命...
4

结果展示分析
参考技术B 断网可以,自己搭建的也要放内网里,安全

Sonar 分析出现内存不足错误,我应该增加 Ant 或 Sonar 服务器的 JVM 堆空间吗?

【中文标题】Sonar 分析出现内存不足错误,我应该增加 Ant 或 Sonar 服务器的 JVM 堆空间吗?【英文标题】:Sonar analysis gives out of memory error, should I increase JVM heap space of Ant or Sonar server? 【发布时间】:2012-12-24 13:30:20 【问题描述】:

我在 Sonar 中分析一个大型项目并得到以下错误:

[sonar:sonar] 03:55:39.511 INFO  p.PhasesTimeProfiler - Execute decorators...

BUILD FAILED
[...]
[...] java.lang.OutOfMemoryError: Java heap space
at org.sonar.batch.index.MeasurePersister.model(MeasurePersister.java:127)
at org.sonar.batch.index.MeasurePersister.getMeasuresToSave(MeasurePersister.java:117)
at org.sonar.batch.index.MeasurePersister.dump(MeasurePersister.java:70)
at org.sonar.batch.index.DefaultPersistenceManager.dump(DefaultPersistenceManager.java:63)
at org.sonar.batch.phases.Phases.execute(Phases.java:95)
at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:139)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:131)
at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:121)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:121)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.Batch.execute(Batch.java:104)
at org.sonar.ant.Launcher.execute(Launcher.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.sonar.ant.SonarTask.delegateExecution(SonarTask.java:244)
at org.sonar.ant.SonarTask.execute(SonarTask.java:193)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:392)
at org.apache.tools.ant.Target.performTasks(Target.java:413)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:442)

我应该增加正在运行的 Sonar 服务器的 Java 堆空间,还是增加执行 Sonar 作业的 Ant 目标?

【问题讨论】:

我正在使用 Jenkins 执行 Ant 目标(声纳) 哦,好吧,这就是我遗漏的可能性...... 【参考方案1】:

从堆栈跟踪中可以看出,Ant 启动了 Sonar 分析,因此您应该增加 Ant 运行所在的 VM 的堆空间。

这是一个非常相似的问题顺便说一句:How to increase Sonar Java heap space

用于命令行 Ant 使用

引用 Mark O'Connor 对另一个问题的回答:

Sonar ANT 任务作为 ANT 的一部分执行,因此您需要使用标准 ANT 环境参数设置 JVM 堆。例如:

导出 ANT_OPTS=-Xmx256m

备注:

这适用于 Linux,对于 Windows,请使用 set 命令 这仅适用于堆空间。对于Permgen,使用-XX:MaxPermSize=<desired amount>

这是一个更相似的问题:Build Failed java.lang.OutOfMemoryError: Java heap space

对于 Eclipse IDE

引用文章http://soenkerohde.com/2008/06/change-eclipse-ant-settings-when-you-run-out-of-memory/

在 Eclipse 中打开菜单:运行->外部工具->打开外部工具对话框… 在左侧选择要更改的构建脚本 选择右侧的JRE标签 将以下内容设置为 VM 参数:-Xms768m -Xmx1024m -XX:MaxPermSize=512m

对于 IntelliJ 理念

这个论坛帖子很有用:ANT build java heap space

引用答案:

请确保您在正确的位置增加了堆。您需要在 IDEA 的 Ant 工具窗口中点击“属性”按钮并在此处编辑 “最大堆大小 (Mb)” 字段。

另外,来自 IntelliJ Idea 页面:Increasing Memory Heap

引用文章:

构建过程的内存堆独立于 IntelliJ IDEA 内存堆,在构建过程完成后释放。

增加内存堆: 打开 构建文件属性 对话框。 在 最大堆大小 字段中,输入所需的内存量。

用于 Jenkins 持续集成和 Ant 构建

这个问题很有用:How to use the Java Options in jenkins ant build tool to set ANT_OPTS

引用答案:

将 JAVA OPTIONS 设置为 -Xmx512m -XX:MaxPermSize=256m 仅不带 ANT_OPTS=

对于 Maven 构建,这篇文章很有用:How to increase maven heapspace in hudson builds

    导航到您的 hudson 工作, 点击配置, 向下滚动到构建部分,然后 点击高级按钮。 将其输入 MAVEN_OPTS: -Xmx512m -XX:MaxPermSize=128m

【讨论】:

mac 是什么..?

以上是关于使用sonar分析代码会泄露吗的主要内容,如果未能解决你的问题,请参考以下文章

DEVOPS技术实践_11:Jenkins集成Sonar

安装sonarQube代码质量管理平台分析PHP代码

sonarlint可以检测js代码吗

使用OCLint和Sonar对iOS代码分析和质量管理

静态代码分析工具sonarqube+sonar-runner的安装配置及使用

sonar+Jenkins 构建代码质量自动化分析平台