【发布时间】:2014-09-20 20:08:26
【问题描述】:
下面的重复代码存在于两个不同的控制器文件中,但 build.xml 中的复制粘贴检测器在运行 phing 时不会检测到它。它生成的报告文件只有一个空块,如下所示。谁能告诉我我错过了什么?
提前致谢
探测器报告:
<?xml version="1.0" encoding="UTF-8"?>
<pmd-cpd/>
zzz@ubuntu:$ bin/phpcpd src/Foo/TeBundle/Controller/Create/LeController.php
phpcpd 2.0.1-5-ga7488a0 by Sebastian Bergmann.
0.00% duplicated lines out of 134 total lines of code.
Time: 25 ms, Memory: 3.00Mb
- 控制器 1: src/Football/TeamBundle/Controller/Create/CountryController.php
- 控制器 2: src/Football/TeamBundle/Controller/Create/CityController.php
重复代码:
public function indexAction()
{
$form = $this->getForm();
if (is_null($form)) {
echo 'form empty';
} else {
echo 'not empty';
}
}
public function indexAction()
{
$form = $this->getForm();
if (is_null($form)) {
echo 'form empty';
} else {
echo 'not empty';
}
}
BUILD.XML
<?xml version="1.0" encoding="UTF-8"?>
<project name="Sport" default="detect-copy-paste" basedir=".">
<!-- GLOBAL VARIABLES -->
<property name="dir-source" value="${project.basedir}/src" />
<property name="dir-report" value="test/report/phing" />
<!-- END -->
<!-- FILESET -->
<fileset id="sourcecode" dir="${dir-source}">
<include name="**/*.php" />
</fileset>
<!-- END -->
<!-- COPY and PASTE DETECTOR -->
<target name="detect-copy-paste" description="Checks similar code blocks.">
<echo msg="Checking similar code blocks ..." />
<phpcpd>
<fileset refid="sourcecode" />
<formatter type="pmd" outfile="${dir-report}/copypaste.xml" />
</phpcpd>
</target>
<!-- END -->
</project>
COMPOSER.JSON
{
"autoload": {
"psr-0": {
"": "src/",
"SymfonyStandard": "app/"
}
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.5.*",
"doctrine/orm": "~2.2,>=2.2.3",
"doctrine/doctrine-bundle": "~1.2",
"twig/extensions": "~1.0",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~3.0",
"sensio/framework-extra-bundle": "~3.0",
"incenteev/composer-parameter-handler": "~2.0",
"behat/behat": "2.5.*@stable",
"behat/behat-bundle": "1.0.0",
"behat/symfony2-extension": "1.1.2",
"behat/mink": "1.5.0",
"behat/mink-extension": "~1.3",
"behat/mink-selenium2-driver": "1.1.1",
"behat/mink-goutte-driver": "1.0.9",
"phing/phing": "2.8.2",
"squizlabs/php_codesniffer": "1.5.1",
"doctrine/doctrine-fixtures-bundle": "2.2.*",
"pdepend/pdepend": "2.0.*",
"phpmd/phpmd" : "2.0.*",
"sebastian/phpcpd": "@dev",
"sebastian/finder-facade": "~1.1",
"sebastian/version": "~1.0.3",
"symfony/console": "~2.2",
"phpunit/php-timer": "~1.0.4",
"theseer/fdomdocument": "~1.4"
}
}
【问题讨论】:
-
手动运行phpmd命令是否也有同样的结果?
-
"134 行代码中有 0.00% 重复行。"
-
这很奇怪,因为一切似乎都很顺利,没有任何错误,但由于某种原因它无法识别重复项。
-
但是
bin/phpcpd src/Foo/TeBundle/Controller/Create/LeController.php不正确。使用此命令,您只需检查控制器。bin/phpcpd src/的结果是什么 -
这次检查的更多行:
0.00% duplicated lines out of 1692 total lines of code.