SonarLint | Printf-style format strings should not lead to unexpected behavior at runtime (java:S2275)

這個問題是發生在print、formatter、log4j等API,當你該傳入參數是沒傳入時,就可能會被SonarLint找出來。以我的範例來說,是發生在logger.warn的誤用,這會導致輸出的內容將會是{}:

}catch (Exception ex){
	logger.warn("get system property error :{}",ex);
	return aDefaultValue;
}

假如你只是要印例外的call stack,把{}拿掉即可:

logger.warn("get system property error",ex);
假如你是要印訊息,就直接getMessage:
logger.warn("get system property error :{}",ex.getMessage());