http://ios.jobbole.com/84371/

##infer的使用范围##

infer支持的编译器有如下几种:

####infer能分析的文件类型####

在github上下载demo,demo下examples目录里,你会发现有android项目、C语言文件、java类、oc类、iOS项目,没错啦,infer完全支持以上几种类型的BUG分析。这里我们用ios_hello项目来做栗子:

首先用cd命令进入ios_hello目录,然后运行以下命令进行编译

infer — xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesimulator

注意: 其中HelloWorldApp是你的项目名称

##gradle##

编译一个gradle工程:infer -- gradle build

##Eradicate##

####什么是 Infer:Eradicate ?####

Infer:Eradicate

是针对Java @Nullable 注解的一个检查器,是 Infer 静态分析工具套件中的一部分,目标是消除空指针异常。

@Nullable 注解指示一个参数,类成员,或者方法返回值可以是 null。

当这个注解修饰一个参数时,说明这个参数是允许为空的,方法体内部应该处理为空的情况。

当注解修饰一个参数时,说明方法的返回值是可以为空的。

从标注为 @Nullable 的程序开始,可空性将随着赋值和调用进行传播,分析器对这个流程敏感的传播过程进行分析。

分析之后,对那些未受保护的空值访问,前后不一致的@Nullable 注解或者该标记却没标记的方法或变量,加上错误标记。

Infer:Eradicate也用来将之前未标记注解的代码添加注解。

####什么是 @Nullable 约定?####

通常对于一个对象,如果你什么都没说明,默认认为这个对象不会是空值。在可能的情况下,我们建议:

安全编程,注解空值。

如果可能为空值,即为类型参数加上 @Nullable 注解。

####什么是注解####

注解放在方法调用或者成员变量访问的接口中:

定义方法时的参数和返回值类型

成员变量申明

局部变量没有办法加注解,他们的可空性是推断出来的。

####Infer:Eradicate 如何调用?####

通过 -a eradicate 选项,可以启用 Eradicate,如下:

infer -a eradicate -- javac Test.java

对于这样的代码,试图访问一个可空的值,却没有做空检查,检测器会检查并报告错误。

class C {

int getLength(@Nullable String s) {

return s.length();

}

}

但如果是以下这样,那么就没问题:

class C {

int getLength(@Nullable String s) {

if (s != null) {

return s.length();

} else {

return -1;

}

}

}

Eradicate 会输出这些警告.

##checkers##

Infer 的分析器执行复杂的程序间(interprocedural,专注整体)静态分析。但当我们针对那些 linter 中常见的分析,不需要复杂的程序间的分析的时候,我们有一个称为 Infer:Checkers(Infer 校验器) 的框架。

Infer:Checkers 可以检测给定项目中每个方法的某个指定属性,虽然分析了整个项目,但是这种分析算是程序内的而不是程序间的。

通过选项 -a checkers 可以在分析时加入校验器(checkers),如下:

infer -a checkers -- javac Test.java

目前,我们有不可变转化校验器.

infer的用法_infer使用的简单介绍相关推荐

  1. infer的用法_infer是什么意思|infer的音标|infer的用法 - 英语词典

    infer的意思.解释 过去式:inferred;   过去分词:inferred; 现在分词:inferring; infer 基本解释 及物动词推断; 猜想,推理; 暗示; 意指 不及物动词作出推 ...

  2. infer的用法_infer是什么意思_infer的翻译_音标_读音_用法_例句_爱词霸在线词典

    全部 四级 六级 高考 考研 We can infer from the passage that strong family and community ties can contribute to ...

  3. 求介绍matlab函数用法的书,MATLAB初学者教程--函数用法的简单介绍

    1.4 函数用法的简单介绍 1.4.1什么是函数 似乎很多人一听到函数这个词就会想到数学中的某个概念,然后对于恐惧数学的同学就开始打退堂鼓.在matlab当中到处可以用到函数,它的出现可以让我们用很简 ...

  4. Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  5. java synchronized静态_Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  6. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  7. 简单介绍一下v-if 的几种用法

    文章目录 前言 一.简单的介绍一下v-if 的几种用法? 1.a && b (a true , b true): a true b true a && b = true ...

  8. Vue.js 内置了10个过滤器,下面简单介绍它们的功能和用法。

    Vue.js 内置了10个过滤器,下面简单介绍它们 的功能和用法. ①capitalize:字符串首字符转化成大 写 ②uppercase:字符串转化成大写 ③lowercase :字符串转化成小写 ...

  9. HTML5 autofocus属性用法简单介绍

    本章节简单介绍一下HTML5中新增的一个属性autofocus,它可以让一个元素加载后获取焦点,在此之前一般要通过使用javascript的focus()方法实现我们的要求,非常的简单,代码如下: 1 ...

  10. C#中File和FileStream的简单介绍和用法

    前言 在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识.下面就对我所学习的File类和FileStream进行简单的总结. 1.首先先介绍File类和FileStream文件流 1.1 ...

最新文章

  1. 有关Expander组件的研究——Silverlight学习笔记[33]
  2. SAP独门神器之VC变式配置,硬核整理版重磅推出!
  3. 中美领军全球AI竞赛,人工智能被高估了么?
  4. Vue的常用指令(v-html {{}}文本插值,v-bind绑定属性,v-if条件渲染,v-for列表渲染,v-on @ 事件绑定,v-model表单绑定)
  5. Angular self study 5 - remove ng-app
  6. c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)
  7. Myeclipse中左边的项目目录没了
  8. PHP正则表达式学习(一) 模式修正符
  9. 10-10-定时邮件发送
  10. 员工邮箱能收不能发的解决方法
  11. Python 彻底甩掉 Java,位居 48 种编程语言之首!
  12. 应用程序委托协议栈发送消息
  13. Matlab GUI界面设计
  14. VS2015 LoadLibrary加载DLL失败的解决方案,GetLastError()返回值193
  15. 生活账本怎么记不会乱,用哪一记账工具才能让账目更清晰
  16. pycharm电脑上怎么下载-Pycharm下载和安装图文教程[超详细]
  17. redis灵魂拷问:聊一聊zset使用
  18. c语言文件分割与合并
  19. C语言之打印错误信息
  20. Linux中的计划任务—Crontab调度一次性执行的任务at/batch

热门文章

  1. Aerospike SSD模式下,刷写磁盘和写入数据swb的关系
  2. 3D游戏编程与设计5——与游戏世界交互
  3. 治愈系英语笔记-1-特殊疑问句
  4. prisma2.0和nexus搭建graphql后端(2)—nexus
  5. 不会画关系图?5 类图形为你展示—变量间相互关系—提供示例与完整代码-ggplot2-geom_point-ComplexHeatmap-pheatmap-ggpairs
  6. 不是所有的美剧都适合学英语
  7. 程序员坐行李箱迎寒风编码 2 小时,目击者:激励我写了一篇论文!
  8. vsual studio 如何关闭禁止mscorsvw.exe (转)
  9. 计算机系统结构层次划分,网络的体系结构及其划分所遵循的原则
  10. 控制服务器系统,控制服务器操作系统