Fortify Test Error: never uses the initial value it assigns to the variable

Fortify Test Error: never uses the initial value it assigns to the variable

我收到以下错误:CDsImplTl.java 中的方法 getCDsByToken() 从不使用它在第 141 行

上分配给变量 paymentCDApp 的初始值

这是我的代码:

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);
        }

到目前为止我还不明白错误信息,我需要查找什么?我的意思是一切都被使用这里有什么不正确的地方?

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 块之后进行 null 检查以确定是否分配了正确的值。我无法给出任何建议,因为您没有将代码放在 try 块之后。但是,将变量初始化为 null 将解决您的问题。