为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

用FindBugs来生成html形式的报告整理

2018-12-04 9页 doc 41KB 63阅读

用户头像

is_003124

暂无简介

举报
用FindBugs来生成html形式的报告整理用FindBugs来生成html形式的报告整理 之前用的是findbugs的eclipse插件,但是在导出报告的时候是xml形式的,很不易阅读,下来讲下用findbugs来导出html的报告。 1. 准备工作 下载到ant和findbugs,我在这里用的是apache-ant-1.7.1-bin.zip和findbugs-1.3.9.zip 下载地址: 和  直接解压到本地磁盘  以解压到 F:\ 为例 配置环境变量 新建ANT_HOME 在path里添加 ANT配置完毕。 同样,findbugs也解压并配置环境变量。...
用FindBugs来生成html形式的报告整理
用FindBugs来生成html形式的整理 之前用的是findbugs的eclipse插件,但是在导出报告的时候是xml形式的,很不易阅读,下来讲下用findbugs来导出html的报告。 1. 准备工作 下载到ant和findbugs,我在这里用的是apache-ant-1.7.1-bin.zip和findbugs-1.3.9.zip 下载地址: 和  直接解压到本地磁盘  以解压到 F:\ 为例 配置环境变量 新建ANT_HOME 在path里添加 ANT配置完毕。 同样,findbugs也解压并配置环境变量。 2. 开始任务 编写ant脚本,即build.xml 3. 生成Findbugs Report 运行cmd打开DOS窗口,进入到build.xml所在目录,键入命令ant findbugs回车即可。 4. 可能遇到的问题 由于工程比较大,所以在导出html的过程中有可能产生一个空白的html。此时原因可能是JVM内存的错(堆栈信息之类的),此时将的jvmargs属性改大,如改为jvmargs="-Xmx1000m",其实此属性是可选的,也可以省略。 5. 部分属性参数说明 关于findbugs任务的详细说明,如下: class  嵌套元素指定要分析的类。这个元素必须指定一个location属性,location属性的名字为archive文件(jar,zip等)、目录或者class文件。可以为一个findbugs元素指定多个class元素。 auxClasspath 可选的嵌套元素,用于指定要分析的类所引用的类,但是并不对引用的类进行分析。 sourcePath 可选的嵌套元素,指定Java源代码的目录。 home  必须的属性,findbugs的安装目录。 quietErrors  可选的布尔型属性。如果是true的话,报告严重的分析错误和丢失的类。默认情况下为false。 reportLevel  可选的属性。指定优先级别。如果是low的话,那么报告所有的bug,如果是medium(缺省值),报告medium和high优先级的bug。 output  可选属性,设置输出格式。 stylesheet  可选属性,指定生成html时使用的样式。 sort  可选属性,如果输出属性设置为text,该属性指定是否对输出结果根据class进行排序,默认为true。 outputFile  可选属性,指定输出文件。 debug  可选的布尔型属性,是否打印分析过程中的日志。默认值为false。 effort  设置分析工作的等级,可以为min、default和max。 conserveSpace  和min effort一样的功能。 workHard 和max effort一样的功能。 visitors 可选属性,指定逗号分隔的列表,指定要运行的detectors。 omitVisitors 可选属性,忽略detectors。折合visitors属性类似,只是不指定不运行哪些detectors。 excludeFilter  可选属性,指定排除的Filter。 includeFilter  可选属性,指定包含的Filter。 projectFile  可选属性,指定项目的名称。 jvmargs  可选属性,指定JVM变量。 systemProperty  系统属性。 timeout 可选属性,指定超市的时间,默认为600,000毫秒,即10分钟。 failOnError  可选属性,指定是否在运行FindBugs出现异常时停止构建过程,默认为false。 errorProperty  可选属性,如果在运行FindBugs时发生错误,指定属性的值为true。 warningsProperty 可选属性,如果在运行FindBugs时发生警告,指定属性的值为true。 6. 其他 其实最重要的还是FindBugs可以帮助我们找出哪些Bugs。 但是FindBugs的Bug描述是在太多,可以参考: 附:Findbugs生成常规问题说明 Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness,1种 Internationalization,12种Malicious code vulnerability,27种Multithreaded correctness,23种Performance,43种Dodgy。 ? Bad practice 坏的实践 一些不好的实践,下面列举几个: HE: 类定义了equals(),却没有hashCode();或类定义了equals(),却使用Object.hashCode();或类定义了hashCode(),却没有equals();或类定义了hashCode(),却使用Object.equals();类继承了equals(),却使用Object.hashCode()。 SQL:Statement 的execute方法调用了非常量的字符串;或Prepared Statement是由一个非常量的字符串产生。 DE: 方法终止或不处理异常,一般情况下,异常应该被处理或报告,或被方法抛出。 ? Correctness 一般的正确性问题 可能导致错误的代码,下面列举几个: NP: 空指针被引用;在方法的异常路径里,空指针被引用;方法没有检查参数是否null;null值产生并被引用;null值产生并在方法的异常路径被引用;传给方法一个声明为@NonNull的null参数;方法的返回值声明为@NonNull实际是null。 Nm: 类定义了hashcode()方法,但实际上并未覆盖父类Object的hashCode();类定义了tostring()方法,但实际上并未覆盖父类Object的toString();很明显的方法和构造器混淆;方法名容易混淆。 SQL:方法尝试访问一个Prepared Statement的0索引;方法尝试访问一个ResultSet的0索引。 UwF:所有的write都把属性置成null,这样所有的读取都是null,这样这个属性是否有必要存在;或属性从没有被write。 ? Internationalization 国际化 当对字符串使用upper或lowercase方法,如果是国际的字符串,可能会不恰当的转换。 ? Malicious code vulnerability 可能受到的恶意攻击 如果代码公开,可能受到恶意攻击的代码,下面列举几个: FI: 一个类的finalize()应该是protected,而不是public的。 MS:属性是可变的数组;属性是可变的Hashtable;属性应该是package protected的。 ? Multithreaded correctness 多线程的正确性 多线程编程时,可能导致错误的代码,下面列举几个: ESync:空的同步块,很难被正确使用。 MWN:错误使用notify(),可能导致IllegalMonitorStateException异常;或错误的 使用wait()。 No:  使用notify()而不是notifyAll(),只是唤醒一个线程而不是所有等待的线程。 SC:  构造器调用了Thread.start(),当该类被继承可能会导致错误。 ? Performance 性能问题 可能导致性能不佳的代码,下面列举几个: DM:方法调用了低效的Boolean的构造器,而应该用Boolean.valueOf(…);用类似 Integer.toString(1) 代替new Integer(1).toString();方法调用了低效的float的构造器,应该用静态的valueOf方法。 SIC:如果一个内部类想在更广泛的地方被引用,它应该声明为static。
/
本文档为【用FindBugs来生成html形式的报告整理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索