NullPointerException检测
APET-NPE插件工作原理
android应用程序编译的过程如下:

从图中,我们可以看出,app编译大致经历了四大阶段:java source files -> .class files -> .dex files -> .apk package 。分析这些阶段,我们兴奋的发现,过程中会产生.class文件,因此,可以借鉴字节码的思路来实现检测目标。
该插件的工作原理如下:

通过合理选择编译过程文件+改造findbugs,扫描过程文件(.class files)来实现NullPointerException检测。
PS:绿色部分为人机交互动作,接下来会详细描述。
怎么安装APET-NPE插件
3、修改eclipse配置(可选,但推荐做)
我们都知道,eclipse是内存大户,eclipse的启动配置,直接影响着它的运行速度和用户体验。因此,我们推荐大家使用以下配置:
(1)找到eclipse.ini文件,打开
PS:经过测试,优化后的配置,比默认配置减少67.8%的FGC次数,有效提升eclipse速度和体验 :)
4、启动eclipse
怎么使用APET-NPE插件
很简单,操作分为四步进行:
1、打开bugs table视图:Window -> Show View -> Other -> Apet Category -> bugs table
2、选中目标项目/文件夹/文件,点击图标(可以关注 eclipse右下角的进度信息)
3、双击 bugs table 视图的 Description列,查看具体的NullPointerException代码
4、改代码,fix NPE bug
截图如下:
1、打开bugs table

2、选中检测对象,进行扫描

3、查看详细的问题代码

APET-NPE与官方findbugs的区别
有同学问到,按照字节码的思路,findbugs本身就可以扫描NullPointerException,为什么还要自己开发一套新插件呢? 这个问题提的非常好,年初我们也想直接用findbugs,但不能如愿,它本身的特性,限制了它在android领域的作用,最直接的一点,就是它无法直接扫描android代码。于是,jimmy也就应运而生了。
APET-NPE较官方findbugs而言,有以下优势,欢迎大家鉴定:
NullPointerException检测的更多相关文章
- APP漏洞扫描器之本地拒绝服务检测详解
APP漏洞扫描器之本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确全面.本文将讲一下应用漏洞 ...
- java 空指针异常(java.lang.NullPointerException)
在Java中对值为null的指针调用任何方法,就会引发空指针异常(java.lang.NullPointerException).空指针异常绝对 是Java中最难查找和调试的一种异常,你永远无法得到任 ...
- java.lang.NullPointerException错误分析
java.lang.NullPointerException是什么错误 你使用了空的指针.在java中虽然号称抛弃了C++中不安全的指针,但其实他所有的东西你都可以理解为指针.这种情况一般发生在你使用 ...
- 空指针错误 java.lang.NullPointerException
使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便 不能通过编译,因此使用基本的JAVA数据类型(double,float,boolean,char,int,long) ...
- 安卓开发过程中空指针的问题Java.lang.NullPointerException
最近做一个新闻客户端的应用,经常出现空指针的问题,我想一方面可能是自己水平有限,二是开发过程中有一些遗漏的地方.一般情况下新手出现空指针的概率较高.下面来总结一下经常出现的问题. 1.所谓的指针,就是 ...
- java.lang.NullPointerException 错误原因
[http-nio-8081-exec-1] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for ...
- JAVA可检测异常和非检测异常
Java的可检测异常和非检测异常泾渭分明.可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则. 非检测异常不遵循处理或声明规则.在产生此类异常时,不一定非要采取任何适当 ...
- NullPointerException异常的原因及java异常??
所谓空指针异常,是因为用空(null)去调用属性或方法. null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常. <--主要有以下几种原因: 1.使用了未 ...
- eclipse中。安装findbugs java检测工具
问题提出: 当我们编写完代码,做完单元测试等各种测试后就提交正式运行,只能由运行的系统来检测我们代码是否有问题了,代码中隐藏的错误在系统运行的过程中被发现后,然后再来进行相应的修改,那么后期修改的代价 ...
随机推荐
- CLR via C# 第五章学习记录(更新中)
1.设置全局溢出检查,项目属性->生成->高级->检测运算上溢/下溢 2.局部使用溢出检测 Byte b = ; b = ));// 不检测溢出 checked// 检测溢出代码段 ...
- Netdata 是一款 Linux 性能实时监测工具
具体的netdata介绍请参照GIT:https://github.com/firehol/netdata/wiki 以下只介绍centos下的netdata的安装与使用: 1.安装Netdata需要 ...
- Unity 自动寻路Navmesh之跳跃,攀爬,斜坡
在之前的几篇Blog总,我们已经系统学习了自动寻路插件Navmesh的相关概念和细节.然而,如果要做一个场景精美的手游,需要用到各种复杂的场景地形,而不仅仅是平地上的自动寻路.今天我们将通过一个完整的 ...
- poj1088(記憶化搜索)
題目鏈接:http://poj.org/problem?id=1088 題意:中文題誒- 思路:dfs,不過直接dfs因該會超時,那我們給他加個記錄路徑就好了... 代碼: #include < ...
- 洛谷P3959 宝藏(状压dp)
传送门 为什么感觉状压dp都好玄学……FlashHu大佬太强啦…… 设$f_{i,j}$表示当前选的点集为$i$,下一次要加入的点集为$j$时,新加入的点和原有的点之间的最小边权.具体的转移可以枚举$ ...
- Linux上安装Apache服务器
http://httpd.apache.org/download.cgi httpd-2.4.29.tar.gz #创建httpd用户 groupadd httpd useradd -g httpd ...
- maven工程运行出Unable to compile class for JSP: 错误
使用mvn tomcat:run运行时出现500错误,使用tomcat7再次运行就好了 更新,上面的是在命令行操作的 如果要在idea上面出现错误的话需要在pom.xml上配置下面的语句 org.ap ...
- appium desktop连接模拟器
1.adb准备好,我建议,下载Androidstudio,因为这样adb是最新的,可能会避免很多问题 2.adb connect 127.0.0.1:xxxx (网易mumu是7555,别的模拟器自行 ...
- [Android基础]Android四大组件之BroadCast
BroadCast的定义: 广播是一种订阅--通知 事件,广播接收者向Android系统 register (订阅广播),广播发送者向Adnroid系统 sendBroadCast(发送广播),然后A ...
- UVaLive6435(dp)
要点 题意:两个数据传输数列,每个数列里有若干个数据包并给出发出时间\(t\),每个数据包到达的时间\(T\)是\(t <= T < t + D\),问有多少种到达序列. 将题目转化为第二 ...