使用 时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.
最佳答案
目前不支持让 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/