标签: pmd

PMD消息"避免使用java.lang.ThreadGroup;它不是线程安全的"

题:

为什么maven PMD插件给出了以下代码行的以下警告:警告:

避免使用java.lang.ThreadGroup; 它不是线程安全的

代码(第二行):

Calendar cal = Calendar.getInstance();
java.sql.Date endDate = new java.sql.Date(cal.getTime().getTime());
Run Code Online (Sandbox Code Playgroud)

语境:

我有这个confit java.sql.Date实例:

public class XYZServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    this.doPost(req, resp);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse resp)
        throws ServletException, IOException {


    Connection conn = null;
    CallableStatement stmt = null;
    try {
        conn = ...
        ...

        Calendar cal = Calendar.getInstance();
        java.sql.Date endDate = new java.sql.Date(cal.getTime().getTime());

        ...
    } catch ...
    }finally {
        try { …
Run Code Online (Sandbox Code Playgroud)

java pmd

8
推荐指数
1
解决办法
5658
查看次数

CheckStyle,FindBugs和PMD配置没有重叠

在我的公司,我们开始使用CheckStyle,FindBugs和PMD来检查我们的代码质量并统一我们的编程风格.这些工具非常有效,但不幸的是它们有一些重叠的规则集.

是否有在线可用的配置删除了重叠规则?

当然,这些默认规则集并不适用于每个项目,但对我们来说这将是一个很好的起点.我们可以采用此默认(非重叠)配置并使其适应我们的样式,而不是首先修剪重复项的规则集.

java findbugs checkstyle pmd

8
推荐指数
1
解决办法
1178
查看次数

代码分析器专门用于gwt代码?

我一直在经历像pmd,findbuigs这样的代码分析器.它们涵盖了许多案例,似乎很好用.但想知道是否有专门针对gwt代码的代码分析器?

java gwt findbugs checkstyle pmd

8
推荐指数
1
解决办法
314
查看次数

NPath复杂性

在这一行:

public Map getAll(BusinessTargetPK pkBusinessTargetId) throws Exception
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

NPath复杂度为32,768(最大允许值为200)

在这一行:

public Map getAll( Long  RLE_ROLE_ID  ) throws Exception {
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

getAll()方法的NPath复杂度为2048

我完全不知道什么是NPath复杂性及其含义.

有人可以提供建议如何避免这种类型的错误?

java pmd sonarqube

8
推荐指数
2
解决办法
2万
查看次数

PMD,checkstyle和findbugs android设置

如何使用最新版本的gradle为Android项目设置PMD,Findbugs和Checkstyle静态代码分析工具?我尝试了几件事,但我没有设法使它们工作.

谢谢

android findbugs checkstyle pmd gradle

8
推荐指数
1
解决办法
2847
查看次数

代码分析器:PMD和FindBugs

1.关于PMD:

1.1如何设置PMD检查,忽略其中的一些,例如"变量名太短或太长","删除空构造函数等" - 如果我这样做,会出现另一个警告,说该类必须有一些静态的方法.基本上,这个课程是空的,以便以后开发,我现在想把它留下来.

1.2遵循此警告建议是否必要?

  A class which only has private constructors should be final
Run Code Online (Sandbox Code Playgroud)

1.3那是什么意思?

 The class 'Dog' has a Cyclomatic Complexity of 3 (Highest = 17)
Run Code Online (Sandbox Code Playgroud)

1.4这个怎么样?我很乐意改变这一点,但目前关于变化的事情并没有让我想到:

Assigning an Object to null is a code smell. Consider refactoring.
Run Code Online (Sandbox Code Playgroud)

2.关于FindBugs:

2.1写入静态字段是否真的那么糟糕,比它的声明要晚一些?以下代码给了我一个警告:

Main.appCalendar = Calendar.getInstance();
Main.appCalendar.setTimeInMillis(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)

哪里appCalendar是静态变量.

2.2此代码:

strLine = objBRdr.readLine().trim();
Run Code Online (Sandbox Code Playgroud)

发出警告:

Immediate dereference of the result of readLine()
Run Code Online (Sandbox Code Playgroud)

这里objBRdr是一个BufferedReader(FileReader).怎么会发生什么?readLine()可能是空的?代码嵌套在while (objBRdr.ready())测试中,到目前为止,我没有问题.

当我用以下代码替换代码时,Update1:​​2.2被修复了:

strLine = objBRdr.readLine();
    if (strLine != null) { …
Run Code Online (Sandbox Code Playgroud)

java eclipse eclipse-plugin findbugs pmd

7
推荐指数
1
解决办法
7671
查看次数

解释和修复可能的空指针取消引用

代码审查工具抱怨saveSafeScan中可能的空指针取消引用safeScanWarnings(...)if(safeScanWarnings!= Null&safeScanWarnings.size()> 0)

我想知道这怎么可能?这是因为我们通过引用返回集合吗?

protected void saveSafeScan(final Response response, final Dtec dtec) throws dtecException
    {
        Collection<String> safeScanWarnings = dtec.getSafeScanWarnings();
        if (safeScanWarnings!=null && safeScanWarnings.size()>0)
        {
            Iterator<String> iterator = safeScanWarnings.iterator();

            int i = 0;
            while (iterator.hasNext())
            {
                String safeScanCode = iterator.next();
                if (i == 0)
                {
                    response.setSafeScanCode(safeScanCode);
                    response.setSafeScanCodeText(getMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s",
                            StringUtils.trimToEmpty(safeScanCode))));
                }
                SafeScanWarning safeScan = new SafeScanWarning();
                safeScan.setCode(safeScanCode);
                safeScan.setMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s", StringUtils.trimToEmpty(safeScanCode)));
                safeScan.setPriority(i);
                response.getSafeScanWarnings().add(safeScan);
                i++;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

java findbugs pmd

7
推荐指数
1
解决办法
3万
查看次数

不必要的本地回复 - 为什么它不好?

我开始与Sonar一起冒险;)

具有默认配置的声纳在主要级别上设置了PMD UnnecessaryLocalBeforeReturn错误.

    List<Todo> filtered = em.createQuery(query).getResultList();
    return filtered;
Run Code Online (Sandbox Code Playgroud)

对我来说,我应该在一行中更改上面的代码.

这对我来说真的很有意思,因为我建议我的同事在返回之前将这个"不必要的"本地化.

我觉得它很容易调试.当我在返回线上设置断点时,我确信当我到达那里时,这个值将准备就绪,我不必对我的陈述进行选择或"逐步表达".

除此之外,我相信它对减少方法的回报点有积极的影响.

我的问题是:是否存在某种解释/讨论,为什么来自Checkstyle,PMD,FindBugs等项目的错误被认为是错误?

pmd

7
推荐指数
1
解决办法
1217
查看次数

使用Gradle自定义PMD规则

我想在使用gradle构建的企业项目中使用gradle PMD插件.

我有一个pmd_rules.xml已经可以工作的文件,但我不能添加自己的java规则(我得到一个类未找到异常).我按照它的网站上的教程.

我在哪里必须制定自己的规则,以便他们得到gradle和PMD的认可?有人已经做过类似的事吗?

pmd.gradle:

apply from: rootProject.file("core/modules.gradle"), to : ext

if(project.name in (modules["modules"] +modules["modules"])){
    apply plugin: 'pmd'

    pmd {
        ignoreFailures = true
        ruleSetFiles = rootProject.files("../repo/pmd_rules.xml")
        sourceSets = [sourceSets.main,sourceSets.test]
        targetJdk = org.gradle.api.plugins.quality.TargetJdk.VERSION_1_7
        ruleSets = []
        toolVersion = "5.0.5"
    }
}
Run Code Online (Sandbox Code Playgroud)

pmd gradle

7
推荐指数
1
解决办法
1072
查看次数

禁止来自CPD的C/C++代码警告

我们使用PMD复制粘贴检测器(CPD)来分析我们的C和C++代码.但是,代码的一些部分非常相似,但有充分的理由,我们希望抑制这些部分的警告.

PMD CPD文档仅提及有关注释的内容,但这对我们的这些语言不起作用.

我怎样才能忽略特定部件的警告?

也许有评论吗?

[更新]我正在使用以下Groovy脚本来运行CPD:

@GrabResolver(name = 'jcenter', root = 'https://jcenter.bintray.com/')
@Grab('net.sourceforge.pmd:pmd-core:5.4.+')
@Grab('net.sourceforge.pmd:pmd-cpp:5.4.+')
import net.sourceforge.pmd.cpd.CPD
import net.sourceforge.pmd.cpd.CPDConfiguration
import java.util.regex.Pattern

def tokens = 60
def scanDirs = ['./path/to/scan', './scan/this/too']
def ignores = [
    './ignore/this/path',
    './this/must/be/ignored/too'
    ].collect({ it.replace('/', File.separator) })
def rootDir = new File('.')
def outputDir = new File('./reports/analysis/')

def filename_date_format = 'yyyyMMdd'
def encoding = System.getProperty('file.encoding')
def language_converter = new CPDConfiguration.LanguageConverter()
def config = new CPDConfiguration()
config.language = new CPDConfiguration.LanguageConverter().convert('c')
config.minimumTileSize = tokens
config.renderer = …
Run Code Online (Sandbox Code Playgroud)

c c++ pmd static-code-analysis cpd

7
推荐指数
1
解决办法
1072
查看次数