<?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>Axel Jung &#187; PHP</title>
	<atom:link href="http://www.ajung.de/category/internet/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Tue, 22 Nov 2011 21:13:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>UnitTH  Unit Tests im zeitlichen Verlauf</title>
		<link>http://www.ajung.de/2011/11/22/unitth-unit-tests-im-zeitlichen-verlauf/</link>
		<comments>http://www.ajung.de/2011/11/22/unitth-unit-tests-im-zeitlichen-verlauf/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 21:13:42 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webwerkzeuge]]></category>
		<category><![CDATA[Continuus Integration]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[Unittests]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=696</guid>
		<description><![CDATA[In unserem aktuellen Projekt werden ziemlich viele Selenium Tests erstellt und ausgeführt. Selenium Tests bedürfen einer besonders Intensiven Wartung und Pflege. Der Künde wünschte sich ein Monitoring über den Zustand der Tests in zeitlicher Hinsicht. Jenkins bietet einige Plugins zur Visualisierung an, aber das reichte uns nicht. Ziel war es eine Gesamtsicht  und Einzelsicht auf [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://junitth.sourceforge.net/"><img class="size-full wp-image-697 alignright" title="unitth-header" src="http://www.ajung.de/wp-content/uploads/2011/11/unitth-header.jpg" alt="" width="330" height="80" /></a>In unserem aktuellen Projekt werden ziemlich viele Selenium Tests erstellt und ausgeführt. Selenium Tests bedürfen einer besonders Intensiven Wartung und Pflege. Der Künde wünschte sich ein Monitoring über den Zustand der Tests in zeitlicher Hinsicht. Jenkins bietet einige Plugins zur Visualisierung an, aber das reichte uns nicht. Ziel war es eine Gesamtsicht  und Einzelsicht auf alle Test Module zu haben. Bei jeden Test sollte erkennbar sein bei welchen Build Lauf er erfolgreich war oder nicht.</p>
<p><a href="http://junitth.sourceforge.net/">UnitTH</a> ist ein kleines Java Tool das aus den Unit Test Ergebnis Dateien einen Report erzeugen kann.</p>
<p>Das Tool untersucht bestehende Unit Test Report XML Dateien und erzeugt daraus ein einen Report. Die zeitliche Achse wird durch Build Läufe erzeugt. UnitTH erkennt die Build Läufe anhand von Ordnern.</p>
<p>Die Reports muss in dieser Struktur vorliegen:</p>
<p>/build1/junit_log1.xml<br />
/build1/junit_log2.xml<br />
/build2/junit_log1.xml<br />
/build2/junit_log2.xml</p>
<p>In den Ordnern können beliebig viele XML Dateien liegen.</p>
<p>Testsuiten sind für das Tool sogenannte Module. Damit wird der Report gegliedert. Man muss also darauf achten das die Suiten in den Reports eindeutige Namen haben und nicht verschachtelte Suiten haben. Meine Report Dateien haben nicht ganz dem Schema entsprochen. Ich wandel die Dateien mit XSLT um.</p>
<p>Der Aufruf erfolgt so:</p>
<p><strong>java -jar -Dunitth.report.dir=/…/unitth/report unitth.jar /…/unitth/xml/*</strong></p>
<p>Man gibt also nur das Ziel Verzeichnis für die Reports und den Pfad zu den XML Dateien.</p>
<p>In den Report bekommt man eine praktische Übersicht über den aktuellen Stand der Tests und den Trend.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/11/unitth_overview.png"><img class="alignnone size-full wp-image-698" title="unitth_overview" src="http://www.ajung.de/wp-content/uploads/2011/11/unitth_overview.png" alt="" width="317" height="346" /></a></p>
<p>Über die Graphen kann man erkennen, wie sich die Testdauer verhält und ob sich die Anzahl der Tests verändert.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/11/unitth_graph.png"><img class="alignnone size-medium wp-image-699" title="unitth_graph" src="http://www.ajung.de/wp-content/uploads/2011/11/unitth_graph-500x235.png" alt="" width="500" height="235" /></a></p>
<p>Man bekommt eine Liste der Build Läufe und darin zusammengefasst wie deren Status war. Hier sieht man auch schön die aktuellen Trends.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/11/unitth_runs.png"><img class="alignnone size-medium wp-image-700" title="unitth_runs" src="http://www.ajung.de/wp-content/uploads/2011/11/unitth_runs-500x154.png" alt="" width="500" height="154" /></a></p>
<p>Die Module (Testsuiten) werden auch zusammengefasst dargestellt und man kann sich auf einer Unterseite den Verlauf auf Testcase Basis anschauen. Dadurch kann man besonders kritische Testfälle erkennen und dann stabilisieren.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/11/unitth_tests.png"><img class="alignnone size-medium wp-image-701" title="unitth_tests" src="http://www.ajung.de/wp-content/uploads/2011/11/unitth_tests-500x277.png" alt="" width="500" height="277" /></a></p>
<p>Das spannendste Feature ist die Spread Ansicht. Hier sieht man, bei welchen Build die Testfälle fehlgeschlagen sind. Damit kann man sogenannte &#8220;Blinker&#8221; Test finden. Um diese dann zu Isolieren.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/11/unitth_verteilung.png"><img class="alignnone size-medium wp-image-702" title="unitth_verteilung" src="http://www.ajung.de/wp-content/uploads/2011/11/unitth_verteilung-500x241.png" alt="" width="500" height="241" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2011/11/22/unitth-unit-tests-im-zeitlichen-verlauf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>T3CON 11 und IPC11</title>
		<link>http://www.ajung.de/2011/10/14/t3con-11-und-ipc11/</link>
		<comments>http://www.ajung.de/2011/10/14/t3con-11-und-ipc11/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 19:32:20 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[deployment]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=660</guid>
		<description><![CDATA[Hier ein kurzer Rückblick auf die Typo3 Konferenz in Hanau und die PHP Konferenz in Mainz. Typo3 Konferenz Die Konferenz fand dieses Mal in Hanau statt und hatte angenehmere Räume als die letzten Jahre. Das Catering hat sich aber leider extrem verschlechtert und war ungenießbar. Sonar Es gab einen Vortrag über Sonar,  ein Tool mit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ajung.de/wp-content/uploads/2011/10/typo3-logo.png"><img class="alignright size-full wp-image-661" title="typo3-logo" src="http://www.ajung.de/wp-content/uploads/2011/10/typo3-logo.png" alt="" width="132" height="45" /></a>Hier ein kurzer Rückblick auf die <a href="http://t3con11-frankfurt.typo3.org/">Typo3 Konferenz</a> in Hanau und die <a href="http://phpconference.com/2011/">PHP Konferenz</a> in Mainz.</p>
<h2>Typo3 Konferenz</h2>
<p>Die Konferenz fand dieses Mal in Hanau statt und hatte angenehmere Räume als die letzten Jahre. Das Catering hat sich aber leider extrem verschlechtert und war ungenießbar.</p>
<h3>Sonar</h3>
<p>Es gab einen Vortrag über <a href="http://www.sonarsource.org/">Sonar</a>,  ein Tool mit dem man sehr übersichtlich Metriken darstellen kann. Es war für mich neu, dass es unter http://metrics.typo3.org/ einen Sonar Server mit den Metriken zu allen Typo3 Extension gibt.</p>
<p>Ein Mitarbeiter der <a href="http://www.dkd.de/">d.k.d</a>  plant eine neue TER Plattform in der man diese Sonar Daten mit einer Suche verknüpfen kann und darüberhinaus die Extension noch mit Sozialen Daten anreichern kann. Eine schöne Vision die eventuell Ende des Jahres verfügbar ist.</p>
<h3>Flow3</h3>
<p>Das <a href="http://flow3.typo3.org/">Flow3 Framework</a> steht vor der ersten stabilen Version. In einem Talk wurden die Erfahrungen mit Flow3 in der Praxis präsentiert. Als Fazit kann man sagen das Flow3 schon einsatzfähig ist und sich der Einsatz lohnt. Wenn man schon mit Extbase gearbeitet hat, ist der Einstieg extrem leicht. Das kann ich nur bestätigen, da wir Flow3 auch in der Praxis einsetzen und keinerlei Probleme hatten.</p>
<h2><a href="http://www.ajung.de/wp-content/uploads/2011/10/header_en.png"><img class="alignright size-full wp-image-663" title="header_en" src="http://www.ajung.de/wp-content/uploads/2011/10/header_en.png" alt="" width="221" height="138" /></a>IPC11</h2>
<p>Die PHP Konferenz fand wieder mal in Mainz statt und hier war das Catering richtig gut.</p>
<h3>PHP 5.4</h3>
<h4>Traits</h4>
<p>Die schönste Neuerung in PHP 5.4 sind für mich die Traits. Damit kann man quasi eine Mehrfachvererbung einsetzen. Ich hatte immer mal wieder Stellen bei denen das notwendig gewesen wäre.</p>
<pre>Class Produkt {
    Public function getPreis(){}
}
Class UserItem {
    Public function getItemId(){}
}
Class UserProdukt extends UserItem use Produkt(){
}</pre>
<p>In diesen Fall habe ich ein Produkt aus einen Katalog und ein gekauftes Produkt eines Kunden. Mit Hilfe der Traits kann ich bei meinen Kunden Objekten in meiner Vererbungslinie bleiben, aber trotzdem die Produkt Methoden verwenden. Man kann das Vererbungsverhalten auch noch konfigurieren und die Namen der Methoden überschreiben oder deren Sichtbarkeit ändern.</p>
<h4>Arrays in Rückgaben verwenden</h4>
<p>Es ist jetzt möglich Arrays aus Rückgabewerten direkt zu verwenden ohne die Variable zwischen zu speichern:</p>
<pre>foo()[42]</pre>
<h4>Neuer Typehint</h4>
<p>Leider gibt es immer noch keine Typehints für scalare Werte. Dafür gibt es einen neuen Typehint <strong>callable</strong>.</p>
<h4>Integrierter Webserver</h4>
<p>PHP hat jetzt einen integrierten Webserver für Development Zwecke. Dieser ist sehr einfach gestrickt und mir ist der Sinn dessen nicht ganz klar geworden.</p>
<h4>JsonSerializable</h4>
<p>Über das neue Interface JsonSerializable kann man steuern welche Daten beim json_encode indem man die Daten über die Methode jsonSerialize zurück gibt.</p>
<h3>Openstreetmap</h3>
<p>Es gab einen spannenden Vortrag über Geo Berechnungen mit vielen Formeln einiges an Theorie zu diesen Thema. Es wurde besonders das Projekt <a href="http://www.openstreetmap.de/">Openstreetmap</a> hervorgehoben. Dieses bietet eine gute Alternative zu Google Maps, da man die Daten lokal speichern kann und somit auch mit Karten ohne Internet Verbindung arbeiten kann.</p>
<p><a href="http://derickrethans.nl/talks/maps-ipc11.pdf">Slides</a></p>
<h3>Liquibase</h3>
<p>Über <a href="http://www.liquibase.org/">Liquibase</a> wurde ja vor kurzem im PHP Magazin berichtet. Hier hatte ein Entwickler von Mayflower seine Erfahrungen mit Liquibase geteilt. Mit Liquibase kann man die Datenbank Änderungen versionieren und sehr komfortabel deployen. Es ist ein sehr mächtiges Java Tool das sich gut in Continuus Deployment Prozesse integrieren lässt.  Besonders interessant, finde ich die Roleback Möglichkeit. Auch andere Teilnehmer in den Talk berichteten von ihren Positiven Erfahrungen mit dem Tool.</p>
<p>Unter dieser Adresse findet man alle Links zu den Slides der Konferenz<br />
<a href="http://joind.in/event/view/806">http://joind.in/event/view/806</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2011/10/14/t3con-11-und-ipc11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP CopyPaste Detection in Eclipse</title>
		<link>http://www.ajung.de/2010/05/03/php-copypaste-detection-in-eclipse/</link>
		<comments>http://www.ajung.de/2010/05/03/php-copypaste-detection-in-eclipse/#comments</comments>
		<pubDate>Mon, 03 May 2010 19:12:47 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=615</guid>
		<description><![CDATA[Die CopyPaste Detection für PHP (phpcpd) ist eine wunderbare Sache und lässt sich einfach aufrufen und in phpUnderControl integrieren. Doch die Stellen zu suchen und zu Eliminieren kann schon etwas mühsam sein. Deutlich einfacher geht es mit dem Eclipse Plugin:  PHP Tool Integration. Hier kann man seit kurzem nicht nur den CodeSniffer innerhalb von Eclipse [...]]]></description>
			<content:encoded><![CDATA[<p>Die CopyPaste Detection für PHP (<a href="http://github.com/sebastianbergmann/phpcpd">phpcpd</a>) ist eine wunderbare Sache und lässt sich einfach aufrufen und in <a href="http://www.phpundercontrol.org/">phpUnderControl</a> integrieren. Doch die Stellen zu suchen und zu Eliminieren kann schon etwas mühsam sein. Deutlich einfacher geht es mit dem Eclipse Plugin:  <a href="http://www.phpsrc.org/">PHP Tool Integration</a>. Hier kann man seit kurzem nicht nur den CodeSniffer innerhalb von Eclipse nutzen, sondern auch die CopyPaste Detection.</p>
<p>Das Tool lässt sich einfach über das Context Menü aufrufen:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/05/copypaste.jpg"><img class="alignnone size-full wp-image-616" title="copypaste" src="http://www.ajung.de/wp-content/uploads/2010/05/copypaste.jpg" alt="" width="505" height="99" /></a></p>
<p>Im Editor werden dann die Fehler angezeigt:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/05/copypaste1.jpg"><img class="alignnone size-full wp-image-617" title="copypaste1" src="http://www.ajung.de/wp-content/uploads/2010/05/copypaste1.jpg" alt="" width="635" height="172" /></a></p>
<p>Zur Installation sollte man diese Eclipse Update Seite verwenden:</p>
<p><a href="http://www.phpsrc.org/eclipse/pti/">http://www.phpsrc.org/eclipse/pti/</a></p>
<p>Danach muss man noch die Einstellungen anpassen und die PHP Executable und die PEAR Libary anpassen:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/05/copypaste23.jpg"><img class="alignnone size-full wp-image-621" title="copypaste2" src="http://www.ajung.de/wp-content/uploads/2010/05/copypaste23.jpg" alt="" width="761" height="392" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/05/03/php-copypaste-detection-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPunit und Eclipse PHP Tool Integration (PTI)</title>
		<link>http://www.ajung.de/2010/01/26/phpunit-und-eclipse-php-tool-integration-pti/</link>
		<comments>http://www.ajung.de/2010/01/26/phpunit-und-eclipse-php-tool-integration-pti/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 18:05:13 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Unittests]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=592</guid>
		<description><![CDATA[Ich nutze die Eclipse PHP Tool Integration Tools jetzt standardmäßig wegen der guten  Code Sniffer Integration wie bereits in einen älteren Blogbeitrag beschrieben. Darüber hinaus beinhaltet das Eclipse Plugin auch eine Funktion zum schnellen Ausführen von Unit Tests. Wenn man an einen Unit Test arbeitet kann man einfach einen Button im Eclipse anklicken zum Ausführen [...]]]></description>
			<content:encoded><![CDATA[<p>Ich nutze die <a href="http://www.phpsrc.org/wiki/">Eclipse PHP Tool Integration</a> Tools jetzt standardmäßig wegen der guten  Code Sniffer Integration wie bereits in einen älteren <a href="http://www.ajung.de/2009/11/23/php_codesniffer-mit-eclipse-nutzen/">Blogbeitrag</a> beschrieben.</p>
<p>Darüber hinaus beinhaltet das Eclipse Plugin auch eine Funktion zum schnellen Ausführen von Unit Tests.</p>
<p>Wenn man an einen Unit Test arbeitet kann man einfach einen Button im Eclipse anklicken zum Ausführen des Tests.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_button.jpg"><img class="alignnone size-full wp-image-596" title="phptools_unit_button" src="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_button.jpg" alt="" width="129" height="65" /></a></p>
<p>Erstmal ist das relativ unspannend, da das selbe passiert wie bei einem Kommandozeilen Aufruf und die Ausgabe nur  unschön in der Eclipse Console erscheint.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_console.jpg"><img class="alignnone size-full wp-image-593" title="phptools_unit_console" src="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_console.jpg" alt="" width="441" height="289" /></a></p>
<p>Es spart aber immerhin einen Toolwechsel und einige Klicks.</p>
<p>Wirklich praktisch finde ich aber die Auswertung der Fehler im Editor von Eclipse. Dort wird die Stelle wo der Fehler aufgetreten ist als unterstrichener Fehler markiert.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit.jpg"><img class="alignnone size-full wp-image-594" title="phptools_unit" src="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit.jpg" alt="" width="317" height="30" /></a></p>
<p>Es wird nicht nur die Stelle im Test markiert sondern Fehler die in den getesteten Code Aufgetreten sind. Wenn dort ein PHP Fehler auftritt oder eine Exception geworfen wird die nicht abgefangen wird, wird diese Stelle markiert. So braucht man nicht anhand der Zeilen Nummern die Stellen suchen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/01/26/phpunit-und-eclipse-php-tool-integration-pti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpUnit Coverage Probleme mit doppelten Klassen</title>
		<link>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/</link>
		<comments>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 13:43:28 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[Unittests]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=590</guid>
		<description><![CDATA[Bei der Erstellung der Codecoverage mit phpUnit bin ich schon mehrmals aus diesen PHP Fehler gestoßen: PHP Fatal error:  Cannot redeclare class Aus dem Code war kein Grund dafür ersichtlich da alle Dateien mit require_once eingebunden waren. Das Problem lag dabei in der Verwendung von Mock Klassen ohne diese vorher importiert zu haben. Ich kann [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Erstellung der Codecoverage mit phpUnit bin ich schon mehrmals aus diesen PHP Fehler gestoßen:</p>
<pre>PHP Fatal error:  Cannot redeclare class
</pre>
<p>Aus dem Code war kein Grund dafür ersichtlich da alle Dateien mit require_once eingebunden waren. Das Problem lag dabei in der Verwendung von Mock Klassen ohne diese vorher importiert zu haben.</p>
<p>Ich kann mit folgenden Code eine Object der Klasse <em>Example</em> erstellen ohne die original Klasse zu laden.</p>
<pre>$object = $this-&gt;getMock ( 'Example', array (), array (), '', false );</pre>
<p>Wenn danach die original Klasse <em>Example</em> importiert wird, ist diese schon deklariert und es kommt zu diesen Fehler. Abhilfe tut hier ein require_once im Test:</p>
<pre>require_once('path/to/Example.php');
$object = $this-&gt;getMock ( 'Example', array (), array (), '', false );
</pre>
<p>Dann klappt es auch mit der Coverage Auswertung.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Tools Workaround für Windows</title>
		<link>http://www.ajung.de/2009/11/25/php-tools-workaround-fur-windows/</link>
		<comments>http://www.ajung.de/2009/11/25/php-tools-workaround-fur-windows/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 09:33:23 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[pear]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=587</guid>
		<description><![CDATA[Leider gibt es in den PHP Tools für Eclipse einen kleinen Bug unter Windows wenn man ein eigenen Coding Standard verwenden will. Der PHP_CodeSniffer kann mit dem Parameter &#8211;standard aufgerufen werden und der CodeSniffer sucht in dem Pfad nach Sniff Dateien. Der CodeSniffer verwendet dafür die PHP Konstante DIRECTORY_SEPARATOR die ja bekanntlich unter Windows ein [...]]]></description>
			<content:encoded><![CDATA[<p>Leider gibt es in den <a href="http://www.phpsrc.org/wiki/">PHP Tools für Eclipse</a> einen kleinen Bug unter Windows wenn man ein eigenen Coding Standard verwenden will. Der <a href="http://pear.php.net/package/PHP_CodeSniffer/">PHP_CodeSniffer</a> kann mit dem Parameter &#8211;standard aufgerufen werden und der CodeSniffer sucht in dem Pfad nach Sniff Dateien. Der CodeSniffer verwendet dafür die PHP Konstante DIRECTORY_SEPARATOR die ja bekanntlich unter Windows ein \ ist und kein /. Jetzt sollte man unter Windows den CodeSniffer wie folgt aufrufen:</p>
<pre>phpcs --standard=C:\path\to\standard</pre>
<p>Wenn man aber bei den PHP-Tools in die Debug Ausgabe schaut wird folgender Befehl ausgeführt</p>
<pre>phpcs --standard=C:/path/to/standard</pre>
<p>Dadurch findet der CodeSniffer die Dateien nicht.</p>
<p>Ich habe den Bug gemeldet und hoffe das es bald behoben ist.</p>
<p>Als Workaround habe ich den CodeSniffer innerhalb des PEAR Packet angepasst und folgende Zeile ergänzt:</p>
<pre>PHP\CodeSniffer.php Zeile 400</pre>
<pre>$this-&gt;standardDir = str_replace('/',DIRECTORY_SEPARATOR,$this-&gt;standardDir);</pre>
<p>In Eclipse muss man dann noch bei den PHP-Tools Einstellungen die lokale PEAR Libary verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/11/25/php-tools-workaround-fur-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schnelle Code Analyse mit phploc</title>
		<link>http://www.ajung.de/2009/11/19/schnelle-code-analyse-mit-phploc/</link>
		<comments>http://www.ajung.de/2009/11/19/schnelle-code-analyse-mit-phploc/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 18:51:18 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[metriken]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=568</guid>
		<description><![CDATA[Sebastian Bergmann hat mit phploc ein kleines Tool geschaffen, das einem ein kurzen Überblick über die Beschaffenheit des PHP Projektes gibt. Im Gegensatz zu PHP_Depend beschränkt sich die Auswertung auf ein paar werte, die aber für eine Auswertung innerhalb eines continues integration Prozess ausreichen würde. Es eignet sich nicht um die Schwachstellen zu finden. Sinnvoll [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a> hat mit <a href="http://github.com/sebastianbergmann/phploc">phploc</a> ein kleines Tool geschaffen, das einem ein kurzen Überblick über die Beschaffenheit des PHP Projektes gibt. Im Gegensatz zu PHP_Depend beschränkt sich die Auswertung auf ein paar werte, die aber für eine Auswertung innerhalb eines continues integration Prozess ausreichen würde. Es eignet sich nicht um die Schwachstellen zu finden.</p>
<p>Sinnvoll ist es auch zu zur Prüfung ob ein Opensource Projekt den eigenen Ansprüchen genügt oder ob ein schlechter Code zu erwarten ist mit dem man auf Dauer nicht arbeiten kann.</p>
<p>phploc wird einfach über den PEAR Installer installiert und kann dann über die Komandozeile über diesen Befehl aufgerufen werden.</p>
<pre>&gt; phploc "C:\...."</pre>
<p>Ich habe ein bekanntes Projektmanagementtool mit diesen Tool getestet und folgendes Ergebnis bekommen.</p>
<p><img class="alignnone size-full wp-image-573" title="phploc" src="http://www.ajung.de/wp-content/uploads/2009/11/phploc.gif" alt="phploc" width="668" height="415" /></p>
<p>Auffällig ist das hier keinerlei Interfaces und Abstrakte Klassen verwendet werden. Der Code ist relativ gut dokumentiert. Die Methoden haben mit durchschnittlich 36 Zeilen zu viel Logik und auch die Cyclomatische Komplexität ist etwas zu hoch. Der hohe Anteil an öffentlichen Methoden sprechen für eine potentielle Instabilität. Dafür scheint die Package Struktur übersichtlich zu sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/11/19/schnelle-code-analyse-mit-phploc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

