java自动推断类型_推断:Facebook的新Java静态分析工具
java自動推斷類型
如何使用Facebook的Infer改善Java開發工作流程?
如果您與技術話題保持同步(如果您正在閱讀此博客,我想您會這樣做),那么您可能聽說過Facebook 剛剛向公眾發布的新工具:推斷。 由于它來自Facebook,所以人們自然會感到好奇,因此我想看看該工具的含義以及它如何對Java開發人員發揮作用。
新帖:推斷:考察Facebook的新Java靜態分析工具http://t.co/Dnp2xmSPQG pic.twitter.com/Dw9zZByMvB
— Takipi(@takipid) 2015年6月24日
什么是Facebook的推斷?
在評估其潛在用途之前,第一步當然是要了解該工具的作用和用途。 Infer是Facebook最近以開源形式發布的靜態分析工具。 專為iOS和Android使用而設計,可用于在應用發布之前檢測其錯誤。 Facebook的工程師一直在將Infer用作其Facebook和Instagram應用程序的內部工具,因此已經為大規模移動環境進行了很好的審查。
大致而言,它的工作方式是在編譯過程中掃描您的代碼,以查找某些預先設想的錯誤和錯誤情況。 捕獲有關編譯過程的信息后,它將對其進行分析以尋找潛在的錯誤。 如果找到任何內容,它將在您的終端中將它們報告給您,并將它們寫入目錄文件。 它查找的錯誤類型的示例包括空指針異常和資源泄漏。
設置Infer需要Python 2.7和Mac OS X或Linux。 要運行它,您可以直接使用javac,也可以使用Maven或Gradle之類的構建工具。 這是一個實際效果的示例:
在此示例中,我們可以看到Infer如何識別簡單的null引用,如何輸出我們需要對其進行修復的相關信息,以及如何在保存修復后成功傳遞該類。 可以在Github上找到Infer的完整源代碼。
增量與非增量
推斷可以增量或非增量方式運行。 兩者之間的區別在于Infer是否將刪除現有的結果目錄。 因此,例如,您可能希望在使用構建系統時以增量方式運行,而在使用單個編譯器命令時以非增量方式運行。 要允許增量模式,您只需要添加–incremental標志。
就限制而言,Infer面臨靜態分析工具的標準標準。 它可以根據應用程序的編碼方式以及與第三方代碼的交互方式報告錯誤警報和/或未命中的錯誤。 它無法檢測的問題范圍也很有限,因為它無法動態地測試您的代碼。 它測試的錯誤類型也有技術限制。 例如,Infer今天不測試數組邊界錯誤或強制轉換異常。
這對Java開發人員意味著什么?
Infer專為移動使用而設計,但對于純Java也非常適用。 由于可以從Maven之類的構建工具運行它,因此使其適應您的工作流程并非易事。 當然,問題是它是否值得使用。
該問題的答案取決于您對靜態分析工具的立場。 顯然,Infer并不是第一個可用于Java的靜態分析工具(例如, FindBugs是一種流行的工具),也不是唯一的開源工具。 但是,它是唯一來自Facebook的網站,它可能會隨身攜帶一定的緩存。 隨著Facebook在其巨型應用程序上的廣泛使用,Infer已受到大規模抨擊。
但是,Infer面對Java的一些語言限制。 它無法處理Java的并發實用程序或諸如算術之類的功能。 其中的一些問題對于其他靜態分析工具也很麻煩,但值得牢記。
工作流程示例
靜態分析工具通常適合在開發的中間階段。 實際上,它們是用于開發過程的過渡步驟或作為CI / CD工作流的一部分的測試工具。 他們無法替換開發人員中的調試器,因為必須對其進行編譯才能工作,并且它們不能替換產品中的錯誤跟蹤器,因為只有當代碼進入生產環境并暴露于動態環境后,才會出現大量錯誤。輸入。 但是在這兩種環境之間有一定的空間,可以使用像Infer這樣的工具。
例如,您可以選擇將Infer用作中間步驟,將其與開發環境選擇的IDE結合使用,并將Takipi用于生產環境。 在這種情況下,推斷可以幫助您在生產之前預先捕獲一些明顯的錯誤。 這可以為您的用戶避免一些問題,或者至少可以減少Takipi儀表板中的某些條目。 或者,如果您正在使用Jenkins運行連續部署模型,則可以在每次發布推送后運行Infer,以查看是否有新的事物引發明顯的危險信號。
結論
當像Facebook這樣的公司發布與Java兼容的開源工具時,值得一看。 Infer不是專門為Java構建的,但仍可用于Java應用程序中的靜態代碼分析。 它有一定的局限性,但也有一些很好的潛在用途,并且在將來應該會繼續改進。 如果您嘗試使用它,請讓我知道您在評論中的想法。
使用正確的工具對于成功至關重要,要確保在代碼交付生產時被覆蓋,請查看生產工具權威指南中的警報工具一章 。
翻譯自: https://www.javacodegeeks.com/2015/06/infer-a-look-into-facebooks-new-java-static-analysis-tool.html
java自動推斷類型
總結
以上是生活随笔為你收集整理的java自动推断类型_推断:Facebook的新Java静态分析工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux组成部分(linux 组成)
- 下一篇: javaone_JavaOne 2015