infer使用的簡單介紹

http://ios.jobbole.com/84371/ ##infer的使用範圍## infer支持的編譯器有以下幾種: infer支持的編譯器java

####infer能分析的文件類型#### 在github上下載demo,demo下examples目錄裏,你會發現有android項目、C語言文件、java類、oc類、iOS項目,沒錯啦,infer徹底支持以上幾種類型的BUG分析。這裏咱們用ios_hello項目來作栗子:android

首先用cd命令進入ios_hello目錄,而後運行如下命令進行編譯ios

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

注意: 其中HelloWorldApp是你的項目名稱git

##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,以下:github

infer -a eradicate -- javac Test.java

對於這樣的代碼,試圖訪問一個可空的值,卻沒有作空檢查,檢測器會檢查並報告錯誤。編程

class C {
  int getLength(@Nullable String s) {
    return s.length();
  }
}

但若是是如下這樣,那麼就沒問題:xcode

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

目前,咱們有不可變轉化校驗器.框架

相關文章
相關標籤/搜索