使用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分析代码会泄露吗的主要内容,如果未能解决你的问题,请参考以下文章