如何使用PMD在XCode下扫描重复代码(Copy&Past)呢?
1.下载PMD
https://pmd.github.io,放置到工程主目录下面。
2.XCode中检测脚本配置
1.脚本配置
在Xcode
的 Build Phases
中,我们增加一个新的 Run Script
,脚本内容如下
1
2
3
4
5
6
7
8
9
|
#检测swift代码
#pmd cpd --files ${EXECUTABLE_NAME} --minimum-tokens 50 --language swift --encoding UTF-8 --format net.sourceforge.pmd.cpd.XMLRenderer > cpd-output.xml --failOnViolation true
#检测objective-c代码
pmd cpd --files ${EXECUTABLE_NAME} --minimum-tokens 20 --language objectivec --encoding UTF-8 --format net.sourceforge.pmd.cpd.XMLRenderer > cpd-output.xml --failOnViolation true
# Running script
php ./cpd_script.php -cpd-xml cpd-output.xml
|
2.配置php文件
在工程主目录下,创建cpd_script.php文件!!!需要安装好php
1
2
3
4
5
6
7
8
9
10
|
<?php
foreach (simplexml_load_file('cpd-output.xml')->duplication as $duplication) {
$files = $duplication->xpath('file');
foreach ($files as $file) {
echo $file['path'].':'.$file['line'].':1: warning: '.$duplication['lines'].' copy-pasted lines from: '
.implode(', ', array_map(function ($otherFile) { return $otherFile['path'].':'.$otherFile['line']; },
array_filter($files, function ($f) use (&$file) { return $f != $file; }))).PHP_EOL;
}
}
?>
|
文章作者
梵梵爸
上次更新
2019-08-19
许可协议
原创文章,如需转载请注明文章作者和出处。谢谢