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

标签 ios objective-c iphone pmd

使用 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/

    相关文章:

    ios - 重用自定义 TableViewCell

    ios - UIView::addSubView 遮挡了原本位于顶部的导航栏

    ios - 无法使用 initWithCoder 影响 UITextView 内容

    ios - 如何选择接收到触摸事件的 UIView

    Objective-C – iOS5 字体渲染变了?

    ios - 保持多个用户偏好的最佳方法(NSUserDefaults、XML 文件或数据库)

    iphone - 以编程方式清除字段后,如何删除 UITextField 中出现的 "ghost"文本?

    ios - 如何让我的事件指示器在正确的时间启动?

    iphone - 苹果应用内购买

    ios - 如何在 iphone 的日期和时间选择器中设置开始日期、时间和结束日期、时间?