IntelliJ IDEA如何分析數(shù)據(jù)流

2018-10-17 11:14 更新

我們使用 IntelliJ IDEA 的時候會發(fā)現(xiàn)在 IntelliJ IDEA 中提供的分析數(shù)據(jù)流功能可以幫助我們使用代碼原型 - 更好地理解繼承的項目代碼,解釋代碼的復(fù)雜部分,在源代碼中發(fā)現(xiàn)瓶頸,等等。

具體的說, “Dataflow to/from here” 功能允許您:

  • 查看分配給變量的值來自哪里。
  • 找出變量可能具有的所有可能的值。
  • 找出表達式(expression)\ 變量(variable) \ 方法參數(shù)(method parameter) 可以流入的位置。
  • 揭示潛在的 NullPointerException 可能出現(xiàn)的地方。

如果要跟蹤在插入符號中傳遞給參數(shù)的值,可以使用:分析| Dataflow to Here(Analyze | Dataflow to Here)命令創(chuàng)建一個源代碼的切片視圖。而且,使用:分析| Dataflow From Here (Analyze | Dataflow from Here)命令可以找到一個表達式可以流入的位置。每個數(shù)據(jù)流分析的結(jié)果都顯示在"分析數(shù)據(jù)流圖" 工具窗口的專用選項卡中。

IntelliJ IDEA 分析數(shù)據(jù)流

  1. 打開所需的文件進行編輯,請參閱編輯器中的 "打開" 和 "重新打開文件"。
  2. 在要分析的符號上放置插入符號(expression(表達式) \ variable(變量) \ method parameter(方法參數(shù)))。
  3. 在主菜單或者上下文菜單上,選擇:分析| Dataflow to Here(Analyze | Dataflow to Here) 或 分析|Dataflow from Here(Analyze | Dataflow from Here),具體選擇取決于您的目的。
  4. 指定分析范圍,并選擇是否忽略來自測試代碼的所有值。
  5. 點擊“確定”。在 "專用分析數(shù)據(jù)流" 工具窗口中查看分析結(jié)果。

IntelliJ IDEA 檢查數(shù)據(jù)流分析的結(jié)果

以下各部分簡要介紹了如何“讀取”數(shù)據(jù)流分析結(jié)果。

數(shù)據(jù)流到此處(Dataflow to Here)

  • 展開樹,找出導(dǎo)致有問題的符號的分配和方法調(diào)用的鏈。具有灰色背景的節(jié)點表示重復(fù)(在其他位置的樹中已經(jīng)存在的用法)。下圖顯示了一個數(shù)據(jù)流到此處(Dataflow to Here)分析實例的結(jié)果: 
    IntelliJ IDEA 檢查數(shù)據(jù)流分析的結(jié)果
    此視圖中的值在以下方向流動:SingleSignonMessage 中 String authType 字段的值來自帶有 authType 參數(shù)的 ClusterSingleSignOn.register() 方法調(diào)用的 SingleSignOnMessage.setAuthType() 方法的 this.authType = authType 賦值語句。
  • 要了解符號可能具有的可能值,請單擊 "數(shù)據(jù)流" 工具窗口的主工具欄上的 "按葉分組表達式" 按鈕。
  • 要查看分配和方法調(diào)用的代碼,請按 切換按鈕。IntelliJ IDEA 添加了一個預(yù)覽窗格顯示當(dāng)前在樹中選擇的分配或調(diào)用的代碼,代碼將突出顯示。
  • 要導(dǎo)航到分配或調(diào)用的源代碼,請雙擊樹中的相關(guān)行。

數(shù)據(jù)流從此處(Dataflow from Here)

分層視圖與數(shù)據(jù)流到此處(Dataflow to Here)分析的結(jié)果類似,但數(shù)值流向相反的方向。

IntelliJ IDEA 檢查數(shù)據(jù)流分析的結(jié)果


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號