java - 有没有被 if - PMD Violation 包围的日志 block

标签 java logging pmd

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/

相关文章:

java - 想要在字符串中搜索其中是否有特殊字符

java - 在 X-Y 平面上查找附近的矩形

java - 删除包装器异常的堆栈跟踪 : bad idea?

java - 查找非线程安全单例 spring 实现的代码质量规则

java - 默认构造函数的隐式 super 构造函数 AbstractNcssCountRule() 未定义。必须定义显式构造函数

java - XML 架构模式错误

java - 将 java 与 Oracle 18c 连接时出现 JDBC 错误

python - Django 日志记录 : logger doesnt write to file

c# - 在没有事件源注册的情况下写入 Windows 应用程序事件日志

java - 如何让 PMD 在 Maven 构建开始而不是结束时运行?