2015-05-26 49 views
2

代碼片段sonarQube建議刪除lambda expression中未使用的局部變量。我仍然不處理什麼是新的Java 8,特別是lambda表達式。
如何替換這些未使用的變量? IntelliJ對我沒有任何建議。如何刪除lambda表達式的變量?

我的代碼

validation.stream().filter(aValidation -> aValidation.getSpec() != null).forEach(aValidation -> { 
       if (aValidation.getArquivo() != null) { 
        String nomeOriginal = aValidation.getSpec().get("peca_nome").toString(); 
        itemsValidacao.put(nomeOriginal, aValidation.getResultadoConsolidado()); 
       } else { 
        if (aValidation.getSpec().get("peca_nome") != null) { 
         String nomeOriginal = aValidation.getSpec().get("peca_nome").toString(); 
         itemsValidacao.put(nomeOriginal, aValidation.getResultadoConsolidado()); 
        } 
       } 
      }); 


chaves.stream().filter(chave -> chave != null).forEach(chave -> { 
      String value = cabecalho.get(chave); 
      try { 
       String novaChave = mapper.getChave(value.trim().toLowerCase()); 
       if (!novaChave.isEmpty()) { 
        cabecalhoNormalizado.put(novaChave, chave); 
       } 
      } catch (NullPointerException e) { 
       Log.info(this, "Erro ao obter chave: " + value, e); 
      } 
     }); 

sonarQube
刪除這個未使用 「蔡夫」 局部變量。
刪除這個未使用的「aValidation」局部變量。

+0

只是刪除它們! – Lrrr

+4

對我來說,它看起來像sonarQube中的一個錯誤,因爲這些變量肯定是在源代碼中使用的。從lambda生成的字節碼中可能有一些未使用的內容,但這是Java 8的一個小故障,工具應該識別它。或者也許是sonarQube明顯錯誤。無論如何,看看他們的問題清單。 – maaartinus

+0

@Lrrr我不知道哪段代碼應該刪除這個變量,IntelliJ沒有指責任何未使用的變量。 –

回答

3

在該代碼片段中,不要刪除它們。它們正在用於String nomeOriginal = aValidation.getSpec().get("peca_nome").toString()cabecalhoNormalizado.put(novaChave, chave)等地方。嘗試刪除它們幾乎肯定會破壞程序,所以我不確定IntelliJ爲什麼認爲它們「未被使用」。