package com;
import org.apache.log4j.Logger;
public class LoggerTest {
private static final Logger logger = Logger.getLogger(LoggerTest.class);
public static void main(String arg[]) {
if (logger.isDebugEnabled()) {
logger.debug("debug");
}
if (logger.isInfoEnabled()) {
logger.info("info");
}
}
}
在运行 PMD 违规时 - 检查代码我得到没有被 if 违规包围的日志 block 。能否请任何人告诉我如何解决此违规问题。
此违规仅发生在信息级别。
提前致谢。
最佳答案
此规则无法正常工作。在以后的版本中它被禁用了。最新版本的 PMD (5.1.1) 有一个名为 GuardLogStatementJavaUtil 的规则,它做同样的事情,但那个有效。
更新:
我试过以下代码:
private static final Log log = LogFactoryImpl.getLog("apache.commons.logger");
private static final Logger logger = Logger.getLogger("java.util.logger");
public static void main(String[] args) {
if (log.isInfoEnabled()) {
log.info("jebediah");
}
if (logger.isLoggable(Level.INFO)) {
logger.info("kerman");
}
}
运行 PMD 后,我收到两条警告消息:
1) 在行 log.info("jebediah");
我收到以下错误消息:Java Logging -> GuardLogStatementJavaUtil
2) 在 logger.info("kerman");
行,我收到以下错误消息:Jakarta Commons Logging -> GuardLogStatement
看起来无论我做什么,我都会收到警告。
关于java - 有没有被 if - PMD Violation 包围的日志 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24114677/