gpt4 book ai didi

ios - 如何在 Objective-c ios 中抑制 PMD 重复?

转载 作者:行者123 更新时间:2023-12-01 19:57:11 25 4
gpt4 key购买 nike

使用 PMD 代码分析器,
我已经展示了几个副本,其中也包括框架类和委托(delegate)以及数据源方法,我只是想压制这些发现。我试过 Suppress warnings不工作。我也找不到Objective-c的语法。谁能告诉我如何抑制 PMD 中的重复发现?

  • 我尝试了以下命令来排除目录,

  • ./run.sh cpd --files/Users/Arun/Documents/Projects/Sample--language objectivec --minimum-tokens 100 --format xml --exclude /Users/Arun/Documents/Projects/Sample/ExternalFrameworks.


  • 我没有看到objective-c 有任何重复的抑制语法。
  • 最佳答案

    目前不支持让 CPD 忽略除 Java 之外的任何其他语言的代码块。唯一可用的选项是使用 --exclude 完全忽略文件。旗帜。

    通过注释(// CPD-[OFF|ON] | /* CPD-[OFF|ON] */)支持它应该相对容易,因为 Objective-C 是使用 JavaCC 实现的。

    源代码被标记 here . CPD 抑制仅包括从 tokenEntries 中删除被忽略的标记。 .

    为此,您首先需要找到评论,这是通过检查 currentToken.specialToken 来完成的。不为空。

    Token st = currentToken.specialToken;
    while (st != null) {
    if (st.image.contains("CPD-OFF") {
    suppressing = true;
    break;
    }
    if (st.image.contains("CPD-ON") {
    suppressing = false;
    break;
    }
    st = st.specialToken;
    }

    然后检查 suppressing 的值是否在添加(或不添加) token 之前 here

    最终代码应如下所示:
    boolean suppressing = false;
    while (currentToken.image.length() > 0) {
    if (!suppressing) {
    tokenEntries.add(new TokenEntry(currentToken.image, sourceCode.getFileName(), currentToken.beginLine));
    }
    currentToken = (Token) tokenManager.getNextToken();
    Token st = currentToken.specialToken;
    while (st != null) {
    if (st.image.contains("CPD-OFF") {
    suppressing = true;
    break;
    }
    if (st.image.contains("CPD-ON") {
    suppressing = false;
    break;
    }
    st = st.specialToken;
    }
    }

    公关总是受欢迎的。这与几个单元测试一起应该足以将其合并到下一个版本。

    关于ios - 如何在 Objective-c ios 中抑制 PMD 重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41801180/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com