<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog -  El TallerWeb &#187; phpcpd</title>
	<atom:link href="http://blog.eltallerweb.com/tag/phpcpd/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eltallerweb.com</link>
	<description>Blog para apasionados al diseño y desarrollo Web</description>
	<lastBuildDate>Tue, 16 Jun 2015 20:26:30 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>Detectando código PHP duplicado con phpcpd</title>
		<link>http://blog.eltallerweb.com/detectando-codigo-php-duplicado-con-phpcpd/</link>
		<comments>http://blog.eltallerweb.com/detectando-codigo-php-duplicado-con-phpcpd/#comments</comments>
		<pubDate>Thu, 13 Dec 2012 23:45:27 +0000</pubDate>
		<dc:creator><![CDATA[igormx]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[phpcpd]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://blog.eltallerweb.com/?p=428</guid>
		<description><![CDATA[Por Carlos Nacianceno, @igormx Muchas veces, se dice que al codificar se debe reutilizar código, esto es cierto,  pero no quiere decir que necesariamente se tenga que hacer “copy-paste” de ese código. El duplicar o ]]></description>
				<content:encoded><![CDATA[<p>Por Carlos Nacianceno, @igormx</p>
<p>Muchas veces, se dice que al codificar se debe reutilizar código, esto es cierto,  pero no quiere decir que necesariamente se tenga que hacer “copy-paste” de ese código. El duplicar o clonar código dentro de un proyecto,  incrementa la dificultad para mantener el mismo aumentando los tiempos y costos.</p>
<p>Sí, al principio es muy simple y rápido hacer “copy-paste” de algunas o muchas líneas de código, pero si luego se detecta un error o se quiere hacer mejoras, la dificultad para lograrlo se multiplicará por el número de veces que se duplicó ese código en el proyecto. Lo ideal para reutilizar código es crear librerías de funciones o clases que sean sencillas y especializadas, de manera que mantenerlas resulte práctico y fácil.</p>
<p>Una herramienta que nos ayuda a detectar código PHP duplicado es <strong>phpcpd</strong> <strong>(Copy/Paste Detector (CPD) for PHP code)</strong> , la cuál fue creada por Sebastian Bergmann, el mismo de <strong>PHPUnit</strong> , y al igual que phploc se instala desde <strong>PEAR</strong>.</p>
<h2>Instalación</h2>
<p>Si no has usado el canal PEAR phpunit.de primero debes “descubrirlo”:</p>
<p>pear channel-discover pear.phpunit.de</p>
<p>pear channel-discover components.ez.no</p>
<p>Y ahora sí podemos instalar el phpcpd</p>
<p>pear install phpunit/phpcpd</p>
<h2>Corriendo una prueba</h2>
<p>/usr/local/zend/bin/phpcpd sigmabol/</p>
<p>phpcpd 1.3.2 by Sebastian Bergmann.</p>
<p>Found 8 exact clones with 550 duplicated lines in 8 files:</p>
<p>&#8211; application/controllers/MatrizinternaController.php:8-163</p>
<p>application/controllers/MatrizController.php:7-162</p>
<p>&nbsp;</p>
<p>&#8211; application/controllers/MatrizinternaController.php:186-240</p>
<p>application/controllers/MatrizController.php:179-233</p>
<p>&nbsp;</p>
<p>&#8211; library/Bvb/Grid/Deploy/Pdf.php:285-292</p>
<p>library/Bvb/Grid/Deploy/Pdf.php:436-443</p>
<p>&nbsp;</p>
<p>&#8211; library/Bvb/Grid/Deploy/Print.php:111-120</p>
<p>library/Bvb/Grid/Deploy/Wordx.php:381-390</p>
<p>&nbsp;</p>
<p>&#8211; library/Bvb/Grid/Deploy/Wordx.php:79-234</p>
<p>library/Bvb/Grid/Deploy/Odt.php:79-234</p>
<p>&nbsp;</p>
<p>&#8211; library/Bvb/Grid/Deploy/Print.php:111-120</p>
<p>library/Bvb/Grid/Deploy/Odt.php:352-361</p>
<p>&nbsp;</p>
<p>&#8211; library/Bvb/Grid/Deploy/Wordx.php:79-233</p>
<p>library/Bvb/Grid/Deploy/Ods.php:79-233</p>
<p>&nbsp;</p>
<p>&#8211; library/Bvb/Grid/Deploy/Print.php:111-118</p>
<p>library/Bvb/Grid/Deploy/Word.php:111-118</p>
<p>&nbsp;</p>
<p>3.64% duplicated lines out of 15116 total lines of code.</p>
<p>Time: 1 second, Memory: 22.25Mb</p>
<p>Al correr el comando nos da una salida con los archivos que tienen líneas de código duplicadas, además un porcentaje de líneas duplicadas respecto al total de líneas del proyecto, el tiempo y memoria que tomó hacer la prueba.</p>
<h2>Conclusiones</h2>
<p>Esta herramienta nos de una buena idea de la forma en la que reutilizamos nuestro código, lo ideal sería que el 0% de nuestro código esté repetido, por supuesto algunas veces esto no será posible y duplicaremos algo de código, pero es bueno mantener esos porcentajes por niveles bajos.</p>
<p>Eso nos ayuda a fomentar buenas prácticas como la creación de librerías comunes y clases extendibles( léase con la facilidad para ser extendidas por clases hijas).</p>
<p>Además phpcpd y las otras herramientas similares pueden ser integradas con servidores de <em>Continuous Integration</em> como Jenkins y phpUnderControl, lo que nos da una visión completa del QA (Quality assurance) en nuestros proyectos PHP.</p>
<p>Saludos.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eltallerweb.com/detectando-codigo-php-duplicado-con-phpcpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
