2017-04-10 51 views
0

我得到這個以下錯誤的初始值:在CDsImplTl.java方法getCDsByToken()從未使用它分配給變量paymentCDApp上線的初始值141Fortify的測試錯誤:從未使用它分配給變量

這是我的代碼:

public GetCDsByTokenResponse getCDsByToken(String token) throws Exception { 
     apiKey.setKey(); 
     IfPaymentCDApp paymentCDApp = new IfPaymentCDApp(); 

     try { 
      String customerId = getCustomerIdByCDId(token); 
      RetrieveCDCommand retrieveCDCommand = getRetrieveCDCommand(customerId, token); 
      CD cD = null; 
      cD = retrieveCDCommand.execute(); 
      paymentCDApp = AppUtils.mapStripeCDToExtCD(cD); 
     } 

我不明白到目前爲止的錯誤消息,我必須查找什麼?我的意思是一切都用在這裏不正確?

回答

2
IfPaymentCDApp paymentCDApp = new IfPaymentCDApp(); 

在上面的代碼中,您將爲對象分配paymentCDApp。但是,稍後在try塊中,您正在爲同一個變量賦值另一個值;

paymentCDApp = AppUtils.mapStripeCDToExtCD(cD); 

(由IfPaymentCDApp paymentCDApp = new IfPaymentCDApp();給出)你之前分配該值永遠不會那條線,並且包含paymentCDApp = AppUtils.mapStripeCDToExtCD(cD);行之間使用。這就是爲什麼你會遇到這樣的錯誤。

您可以在初始化該變量爲null這是一個更好的做法。

apiKey.setStripeApiKey(); 
IfPaymentCDApp paymentCDApp = null; 

try { 
    String customerId = getCustomerIdByCDId(token); 
    RetrieveCDCommand retrieveCDCommand = getRetrieveCDCommand(customerId, token); 
    CD cD = null; 
    cD = retrieveCDCommand.execute(); 
    paymentCDApp = AppUtils.mapStripeCDToExtCD(cD); 
} 

您可能需要在try塊之後進行空檢查,以確定是否分配了正確的值。我不能給出任何建議,因爲你沒有把代碼放在try塊之後。但是,初始化變量爲null將解決您的問題。

+0

如果我按照你的方式實現Eclipse,我想添加一個@SuppressWarnings(null),我必須這樣做嗎?或者有沒有一種方法可以實現你的方式沒有SurpressWarnings – Nali

+0

這就是爲什麼我說你需要一個空檢查。 'if(paymentCDApp!= null)'確保你的事情順利進行。還有一件事,你確定CDsImplTl.java中的方法getCDsByToken()從來沒有使用它分配給第141行的變量paymentCDApp的初始值是錯誤的嗎?還是隻是另一個警告? –

+0

我正在做這些東西強化,它被標記爲和問題,但也標記爲低優先級,所以我不知道我是否必須解決這個問題或離開它 – Nali