スポンサーリンク

このドキュメントの内容は、以下の通りです。

phpcpd は、 Copy/Paste Detector (CPD) for PHP code です。
PHPのコピペ、つまり、重複するコードを検出してくれます。

phpcpd のインストール


kaworu%  pear channel-discover components.ez.no
Discovering channel components.ez.no over http:// failed with message: channel-add: temp_dir is not writable: "/tmp/pear" - You can change this location with "pear config-set temp_dir"
Trying to discover channel components.ez.no over https:// instead
Discovery of channel "components.ez.no" failed (channel-add: temp_dir is not writable: "/tmp/pear" - You can change this location with "pear config-set temp_dir")
1で終了しました
kaworu% sudo pear install phpunit/phpcpd
Password:
Unknown remote channel: components.ez.no
phpunit/phpcpd requires package "channel://components.ez.no/ConsoleTools" (version >= 1.6)
downloading File_Iterator-1.3.0.tgz ...
Starting to download File_Iterator-1.3.0.tgz (5,109 bytes)
.....done: 5,109 bytes
downloading PHP_Timer-1.0.2.tgz ...
Starting to download PHP_Timer-1.0.2.tgz (3,686 bytes)
...done: 3,686 bytes
install ok: channel://pear.phpunit.de/File_Iterator-1.3.0
install ok: channel://pear.phpunit.de/PHP_Timer-1.0.2

なんだか、上では、うまくいってませんが、次のコマンドでうまくいきました。

kaworu% sudo pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded
kaworu% sudo pear install  phpunit/phpcpd
downloading phpcpd-1.3.5.tgz ...
Starting to download phpcpd-1.3.5.tgz (8,746 bytes)
.....done: 8,746 bytes
downloading ConsoleTools-1.6.1.tgz ...
Starting to download ConsoleTools-1.6.1.tgz (869,994 bytes)
...done: 869,994 bytes
downloading Base-1.8.tgz ...
Starting to download Base-1.8.tgz (236,357 bytes)
...done: 236,357 bytes
install ok: channel://components.ez.no/Base-1.8
install ok: channel://components.ez.no/ConsoleTools-1.6.1
install ok: channel://pear.phpunit.de/phpcpd-1.3.5

phpcpd の確認


phpcpd コマンドがインストールされたことを確認します。
kaworu% rehash
kaworu% which phpcpd
/usr/local/bin/phpcpd
kaworu% phpcpd --version
phpcpd 1.3.5 by Sebastian Bergmann.           

まったく意味のないソースコードでテストしてみます。

kaworu% phpcpd --min-lines 1 --min-tokens 10 .
phpcpd 1.3.5 by Sebastian Bergmann.

Found 2 exact clones with 14 duplicated lines in 1 files:
  - a.php:4-9
    a.php:8-13

  - a.php:4-13
    a.php:20-29

42.42% duplicated lines out of 33 total lines of code.

1で終了しました

テストしたPHPコードは、以下のとおりです。

kaworu% cat -n a.php
     1	<?php
     2	function a ( )
     3	{
     4		foreach ( $a as $k => $v)
     5		{
     6			echo $k, $v, PHP_EOL;
     7		}
     8		foreach ( $a as $k => $v)
     9		{
    10			echo $k, $v, PHP_EOL;
    11		}
    12		foreach ( $a as $k => $v)
    13		{
    14			echo $k, $v, PHP_EOL;
    15		}
    16	}
    17	
    18	function b ( )
    19	{
    20		foreach ( $a as $k => $v)
    21		{
    22			echo $k, $v, PHP_EOL;
    23		}
    24		foreach ( $a as $k => $v)
    25		{
    26			echo $k, $v, PHP_EOL;
    27		}
    28		foreach ( $a as $k => $v)
    29		{
    30			echo $k, $v, PHP_EOL;
    31		}
    32	}
    33	?>

検査するファイルについて


デフォルトでは、 .php の拡張子しか対象になりません。
--suffixes で .inc を対象にすることができます。

phpcpd --suffixes .inc /usr/local/share/pear

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー