<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Manuel Pichler - phpmd</title>
    <link>http://www.manuel-pichler.de/</link>
    <description>Trust is good, (phpUnder)Control is better.</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6 - http://www.s9y.org/</generator>
    
    

<item>
    <title>PHPMD 1.1.0 released</title>
    <link>http://www.manuel-pichler.de/archives/98-PHPMD-1.1.0-released.html</link>
            <category>php</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/98-PHPMD-1.1.0-released.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=98</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=98</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  Version 1.1.0 of PHPMD was released on March the 20th 2011. The key features
  for this release were two new rules. The first one utilizes the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url=aHR0cDovL3BkZXBlbmQub3JnL2RvY3VtZW50YXRpb24vc29mdHdhcmUtbWV0cmljcy9jb3VwbGluZy1iZXR3ZWVuLW9iamVjdHMuaHRtbA==&amp;amp;entry_id=98&quot; title=&quot;http://pdepend.org/documentation/software-metrics/coupling-between-objects.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/documentation/software-metrics/coupling-between-objects.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Coupling
  Between Objects (CBO)&lt;/a&gt; metric to detect strongly coupled classes. The second
  one detects the usage of PHP&#039;s questionable &lt;code&gt;goto&lt;/code&gt; statement. Beside
  that we have closed a minor bug in the LongVariable rule, where also private
  properties with descriptive names were reported. And finally we have replaced
  deprecated PHPUnit features in the PHPMD&#039;s test suite, so that PHPMD&#039;s tests
  should now work with PHPUnit 3.4.x and 3.5.x without deprecated warnings.
&lt;/p&gt;

&lt;h5 id=&quot;phpmd110-features&quot;&gt;Features&lt;/h5&gt;
&lt;ul&gt;
  &lt;li&gt;
    Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2416&amp;amp;entry_id=98&quot; title=&quot;https://www.pivotaltracker.com/story/show/10474873&quot;  onmouseover=&quot;window.status=&#039;https://www.pivotaltracker.com/story/show/10474873&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#10474873&lt;/a&gt;: 
    Add rule for PHP&#039;s goto statement. Implemented with commit &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2417&amp;amp;entry_id=98&quot; title=&quot;https://github.com/phpmd/phpmd/commit/2745a20&quot;  onmouseover=&quot;window.status=&#039;https://github.com/phpmd/phpmd/commit/2745a20&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#2745a20&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;
    Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2418&amp;amp;entry_id=98&quot; title=&quot;https://www.pivotaltracker.com/story/show/10474987&quot;  onmouseover=&quot;window.status=&#039;https://www.pivotaltracker.com/story/show/10474987&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#10474987&lt;/a&gt;: 
    Implement rule for CBO metric. Implemented with commit &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2419&amp;amp;entry_id=98&quot; title=&quot;https://github.com/phpmd/phpmd/commit/14277b4&quot;  onmouseover=&quot;window.status=&#039;https://github.com/phpmd/phpmd/commit/14277b4&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#14277b4&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;
    Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2420&amp;amp;entry_id=98&quot; title=&quot;https://www.pivotaltracker.com/story/show/11012465&quot;  onmouseover=&quot;window.status=&#039;https://www.pivotaltracker.com/story/show/11012465&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#11012465&lt;/a&gt;: 
    Replace deprecated PHPUnit features in test suite. Implemented with commit &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2421&amp;amp;entry_id=98&quot; title=&quot;https://github.com/phpmd/phpmd/commit/4adb88d&quot;  onmouseover=&quot;window.status=&#039;https://github.com/phpmd/phpmd/commit/4adb88d&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#4adb88d&lt;/a&gt;.
  &lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h5 id=&quot;phpmd110-bugfixes&quot;&gt;Bugfixes&lt;/h5&gt;
&lt;ul&gt;
  &lt;li&gt;
    Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2422&amp;amp;entry_id=98&quot; title=&quot;https://www.pivotaltracker.com/story/show/10096717&quot;  onmouseover=&quot;window.status=&#039;https://www.pivotaltracker.com/story/show/10096717&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#10096717&lt;/a&gt;: 
    LongVariable rule should not apply on private properties. Fixed with commit &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2423&amp;amp;entry_id=98&quot; title=&quot;https://github.com/phpmd/phpmd/commit/f063bc9&quot;  onmouseover=&quot;window.status=&#039;https://github.com/phpmd/phpmd/commit/f063bc9&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#f063bc9&lt;/a&gt;.
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h5 id=&quot;phpmd110-download&quot;&gt;Download&lt;/h5&gt;
&lt;p&gt;
  You can download release 1.1.0 through PHPMD&#039;s &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2424&amp;amp;entry_id=98&quot; title=&quot;http://pear.phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR Channel Server&lt;/a&gt;
  or you can download the release as a &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2425&amp;amp;entry_id=98&quot; title=&quot;http://static.phpmd.org/php/1.1.0/phpmd.phar&quot;  onmouseover=&quot;window.status=&#039;http://static.phpmd.org/php/1.1.0/phpmd.phar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Phar archive&lt;/a&gt;
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 21 Mar 2011 11:42:15 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/98-guid.html</guid>
    <category>cbo</category>
<category>phpmd</category>
<category>quality assurance</category>
<category>release announcement</category>

</item>
<item>
    <title>Artikel zum Thema Softwaremetriken</title>
    <link>http://www.manuel-pichler.de/archives/88-Artikel-zum-Thema-Softwaremetriken.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>phpundercontrol</category>
            <category>projects</category>
            <category>staticReflection</category>
    
    <comments>http://www.manuel-pichler.de/archives/88-Artikel-zum-Thema-Softwaremetriken.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=88</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=88</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  &lt;em&gt;This blog post is in German as the mentioned article was published in German.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
In der heute erschienenen Ausgabe &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2360&amp;amp;entry_id=88&quot; title=&quot;http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;4.10&lt;/a&gt; des &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2361&amp;amp;entry_id=88&quot; title=&quot;http://it-republik.de/php/php-magazin/&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/php/php-magazin/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Magazins&lt;/a&gt; ist auch ein Artikel von mir enthalten, und wie sollte es wohl anders sein *Trommelwirbel*, beschäftigt der sich mit dem Thema &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2362&amp;amp;entry_id=88&quot; title=&quot;http://de.wikipedia.org/wiki/Softwaremetrik&quot;  onmouseover=&quot;window.status=&#039;http://de.wikipedia.org/wiki/Softwaremetrik&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Softwaremetriken&lt;/a&gt; &lt;img src=&quot;http://www.manuel-pichler.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; In diesem Artikel gibt es eine sehr ausführliche Einführung in die Thematik, mit eine Reihe von praktischen Beispielen und den daraus ableitbaren Aussagen über den untersuchten Quelltext.
&lt;/p&gt;

&lt;p&gt;
Über Kommentare, Anregungen und Kritik rund um den Artikel würde ich mich sehr freuen. Und sollte euch der Artikel gefallen haben, empfehle ich die Internationale &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2363&amp;amp;entry_id=88&quot; title=&quot;http://phpconference.com&quot;  onmouseover=&quot;window.status=&#039;http://phpconference.com&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Conference 2010&lt;/a&gt;, die vom 30. Mai bis 2. Juni in Berlin stattfindet, an der ich teilnehmen und zwei Vorträge halten werden.
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2364&amp;amp;entry_id=88&quot; title=&quot;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13448&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13448&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Von Continuous Integration zu Continuous Deployment&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2365&amp;amp;entry_id=88&quot; title=&quot;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13450&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13450&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Statische Codeanalyse wirklich effektiv nutzen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Wed, 12 May 2010 09:04:12 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/88-guid.html</guid>
    <category>article</category>
<category>ipc</category>
<category>php-magazin</category>
<category>software metrics</category>

</item>
<item>
    <title>PHP-Magazin Artikel zum Thema Softwaremetriken</title>
    <link>http://www.manuel-pichler.de/archives/89-PHP-Magazin-Artikel-zum-Thema-Softwaremetriken.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>phpundercontrol</category>
            <category>projects</category>
            <category>staticReflection</category>
    
    <comments>http://www.manuel-pichler.de/archives/89-PHP-Magazin-Artikel-zum-Thema-Softwaremetriken.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=89</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=89</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  &lt;em&gt;This blog post is in German as the mentioned article was published in German.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
In der heute erschienenen Ausgabe &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2366&amp;amp;entry_id=89&quot; title=&quot;http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;4.10&lt;/a&gt; des &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2367&amp;amp;entry_id=89&quot; title=&quot;http://it-republik.de/php/php-magazin/&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/php/php-magazin/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Magazins&lt;/a&gt; ist auch ein Artikel von mir enthalten, und wie sollte es wohl anders sein *Trommelwirbel*, beschäftigt der sich mit dem Thema &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2368&amp;amp;entry_id=89&quot; title=&quot;http://de.wikipedia.org/wiki/Softwaremetrik&quot;  onmouseover=&quot;window.status=&#039;http://de.wikipedia.org/wiki/Softwaremetrik&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Softwaremetriken&lt;/a&gt; &lt;img src=&quot;http://www.manuel-pichler.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; In diesem Artikel gibt es eine sehr ausführliche Einführung in die Thematik, mit eine Reihe von praktischen Beispielen und den daraus ableitbaren Aussagen über den untersuchten Quelltext.
&lt;/p&gt;

&lt;p&gt;
Über Kommentare, Anregungen und Kritik rund um den Artikel würde ich mich sehr freuen. Und sollte euch der Artikel gefallen haben, empfehle ich die Internationale &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2369&amp;amp;entry_id=89&quot; title=&quot;http://phpconference.com&quot;  onmouseover=&quot;window.status=&#039;http://phpconference.com&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Conference 2010&lt;/a&gt;, die vom 30. Mai bis 2. Juni in Berlin stattfindet, an der ich teilnehmen und zwei Vorträge halten werden.
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2370&amp;amp;entry_id=89&quot; title=&quot;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13448&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13448&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Von Continuous Integration zu Continuous Deployment&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2371&amp;amp;entry_id=89&quot; title=&quot;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13450&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;amp;id=13450&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Statische Codeanalyse wirklich effektiv nutzen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Wed, 12 May 2010 09:04:12 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/89-guid.html</guid>
    <category>article</category>
<category>ipc</category>
<category>php-magazin</category>
<category>software metrics</category>

</item>
<item>
    <title>Goodbye Cologne</title>
    <link>http://www.manuel-pichler.de/archives/86-Goodbye-Cologne.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>phpundercontrol</category>
            <category>planet-php</category>
    
    <comments>http://www.manuel-pichler.de/archives/86-Goodbye-Cologne.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=86</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=86</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;As many of you may already have noticed, there will be a big change in my
career as a professional software engineer and architect this summer. Together
with &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2346&amp;amp;entry_id=86&quot; title=&quot;http://kore-nordmann.de/blog/0095_ez_components_new_ways.txt&quot;  onmouseover=&quot;window.status=&#039;http://kore-nordmann.de/blog/0095_ez_components_new_ways.txt&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Kore&lt;/a&gt; and &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2347&amp;amp;entry_id=86&quot; title=&quot;http://schlitt.info/opensource/blog/0725_goodbye_ez_systems_hello_world.html&quot;  onmouseover=&quot;window.status=&#039;http://schlitt.info/opensource/blog/0725_goodbye_ez_systems_hello_world.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Toby&lt;/a&gt; I am in the process of founding a company. The focus
of this company will be on services all around the whole quality life cycle in
PHP projects.&lt;/p&gt;

&lt;p&gt;Under the hood of our company we will also offer support, trainings and
consulting for several quality assurance tools, like &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2348&amp;amp;entry_id=86&quot; title=&quot;http://pdepend.org&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pdepend&lt;/a&gt;, &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2349&amp;amp;entry_id=86&quot; title=&quot;http://phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phpmd&lt;/a&gt; and
&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2350&amp;amp;entry_id=86&quot; title=&quot;http://phpundercontrol.org&quot;  onmouseover=&quot;window.status=&#039;http://phpundercontrol.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phpUnderControl&lt;/a&gt;. For you, this opens a great opportunity. You can use the
tools and the documentation, as well as participate in the community, as
usual. But from now on you can also purchase professional support, if you get
stuck or need general assitance.  And when you miss a feature or need an
individual extension for one of these tools, don&#039;t hesitate to contact us.&lt;/p&gt;

&lt;p&gt;I am really excited what cool things will happen in the next couple of years
and I am looking forward to cowork with professionals like &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2351&amp;amp;entry_id=86&quot; title=&quot;http://schlitt.info/opensource/&quot;  onmouseover=&quot;window.status=&#039;http://schlitt.info/opensource/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Toby&lt;/a&gt; and
&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2352&amp;amp;entry_id=86&quot; title=&quot;http://kore-nordmann.de&quot;  onmouseover=&quot;window.status=&#039;http://kore-nordmann.de&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Kore&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To finalize the little marketing for the company and its services &lt;img src=&quot;http://www.manuel-pichler.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; I would
appreciate to meet you, your colleagues and your compmany, to give
presentations or into-depth trainings on one of the tools or on quality
assurance in general.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 29 Apr 2010 13:20:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/86-guid.html</guid>
    <category>changes</category>
<category>company</category>
<category>consulting</category>
<category>php</category>
<category>phpmd</category>
<category>phpundercontrol</category>
<category>php_depend</category>
<category>quality</category>
<category>support</category>
<category>training</category>

</item>
<item>
    <title>Howto create custom rule sets for PHPMD</title>
    <link>http://www.manuel-pichler.de/archives/84-Howto-create-custom-rule-sets-for-PHPMD.html</link>
            <category>php</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>planet-php</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/84-Howto-create-custom-rule-sets-for-PHPMD.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=84</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  In this blog post I will describe a useful feature in &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2316&amp;amp;entry_id=84&quot; title=&quot;http://phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPMD&lt;/a&gt; that will simplify your life when it comes to create custom rule sets for PHPMD. PHPMD can be seen as an &lt;em&gt;one level down/low level&lt;/em&gt; equivalent to &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2317&amp;amp;entry_id=84&quot; title=&quot;http://pear.php.net/package/PHP_CodeSniffer&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/package/PHP_CodeSniffer&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_CodeSniffer&lt;/a&gt;. It is a simple command line tool that can be used to check your application&#039;s source code for possible bugs, suboptimal or overcomplicated code. The current release of &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2318&amp;amp;entry_id=84&quot; title=&quot;http://phpmd.org/download/releases/index.html&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/download/releases/index.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPMD&lt;/a&gt; ships with three default rule sets. The first set of rules tests the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2319&amp;amp;entry_id=84&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/rules/codesize.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;Code Size Rules&quot;&gt;codesize&lt;/a&gt; of class, methods and functions. The second rule set contains rules that check your code for &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2320&amp;amp;entry_id=84&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/rules/unusedcode.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;Unused Code Rules&quot;&gt;unused&lt;/a&gt; variables, methods etc. and finally there is a rule set that tests the code against some &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2321&amp;amp;entry_id=84&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/rules/naming.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;Naming Rules &quot;&gt;naming&lt;/a&gt; conventions.
&lt;/p&gt;

&lt;p&gt;
  Normally when you start using a quality assurance tool, you will not want to use it&#039;s default configuration. Sometimes you would like to use only a subset, because the full stack will produce too much noise, or you would like to customize some thresholds, because the factory defaults do not fit to your environment. In this blog post I give a short introduction into PHPMD&#039;s rule set syntax and howto to create your own rule set, by reusing parts of the existing default configuration.
&lt;/p&gt;

&lt;p&gt;If you would like to only pick some of the rules that come with PHPMD and
you want to customize some of the predefined thresholds, you can do this
by creating your own rule set file that references a custom collection of
rules with an individual configuration.&lt;/p&gt;

&lt;h5&gt;Starting with an empty ruleset.xml file&lt;/h5&gt;
&lt;p&gt;The simpliest way to start with a new rule set is to copy one of the
existing files and remove all the rule-tags from the document body.
Otherwise you can use the following example as a template for your own
rule set file. You should change the content of the &lt;code&gt;&amp;#64;name&lt;/code&gt; attribute
and &lt;code&gt;&amp;lt;description /&amp;gt;&lt;/code&gt; element to something that describes the purpose
of this set.&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;
&amp;lt;ruleset name=&amp;quot;My first PHPMD rule set&amp;quot;
         xmlns=&amp;quot;http://pmd.sf.net/ruleset/1.0.0&amp;quot;
         xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
         xsi:schemaLocation=&amp;quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;
         xsi:noNamespaceSchemaLocation=&amp;quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;&amp;gt;
    &amp;lt;description&amp;gt;
        My custom rule set that checks my code...
    &amp;lt;/description&amp;gt;
&amp;lt;/ruleset&amp;gt;
&lt;/pre&gt;

&lt;h5&gt;Adding rule references to the new ruleset.xml file&lt;/h5&gt;
&lt;p&gt;The first thing we would like to do is to add all &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/unusedcode.html&quot;&gt;unused code&lt;/a&gt; rules
to the new rule set file. This can simply be done with a &lt;code&gt;&amp;lt;rule /&amp;gt;&lt;/code&gt;
element that references the entire &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/unusedcode.html&quot;&gt;unused code&lt;/a&gt; rule set that comes
with PHPMD.&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;
&amp;lt;ruleset name=&amp;quot;My first PHPMD rule set&amp;quot;
         xmlns=&amp;quot;http://pmd.sf.net/ruleset/1.0.0&amp;quot;
         xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
         xsi:schemaLocation=&amp;quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;
         xsi:noNamespaceSchemaLocation=&amp;quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;&amp;gt;
    &amp;lt;description&amp;gt;
        My custom rule set that checks my code...
    &amp;lt;/description&amp;gt;

    &amp;lt;!-- Import the entire unused code rule set --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/unusedcode.xml&amp;quot; /&amp;gt;
&amp;lt;/ruleset&amp;gt;
&lt;/pre&gt;
&lt;p&gt;That&#039;s it. Now the custom rule set applies all &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/unusedcode.html&quot;&gt;unused code&lt;/a&gt; rules
against the analyzed source code.&lt;/p&gt;
&lt;p&gt;We would also like to use the &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/codesize.html#cyclomaticcomplexity&quot;&gt;cyclomatic complexity&lt;/a&gt; rule from the
existing &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/codesize.html&quot;&gt;codesize&lt;/a&gt; set in our custom rule set. To achieve this we can
reuse the same syntax with a &lt;code&gt;&amp;lt;rule /&amp;gt;&lt;/code&gt; element and a &lt;code&gt;&amp;#64;ref&lt;/code&gt; attribute.&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;
&amp;lt;ruleset name=&amp;quot;My first PHPMD rule set&amp;quot;
         xmlns=&amp;quot;http://pmd.sf.net/ruleset/1.0.0&amp;quot;
         xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
         xsi:schemaLocation=&amp;quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;
         xsi:noNamespaceSchemaLocation=&amp;quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;&amp;gt;
    &amp;lt;description&amp;gt;
        My custom rule set that checks my code...
    &amp;lt;/description&amp;gt;

    &amp;lt;!-- Import the entire unused code rule set --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/unusedcode.xml&amp;quot; /&amp;gt;

    &amp;lt;!-- Import the entire cyclomatic complexity rule --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/codesize.xml/CyclomaticComplexity&amp;quot; /&amp;gt;
&amp;lt;/ruleset&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now that the new rule set uses the &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/codesize.html#cyclomaticcomplexity&quot;&gt;cyclomatic complexity&lt;/a&gt; rule we would
also like to customize some of the rule&#039;s properties. First we will
increase the rule&#039;s priority to the highest possible priority value &lt;code&gt;1&lt;/code&gt;
and we also decrease the threshold when the rule reports a violation. This
customization can be done with same xml elements that are used to configure
the original rule, so that you can take a look at one of the original rule
set file.&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;
&amp;lt;ruleset name=&amp;quot;My first PHPMD rule set&amp;quot;
         xmlns=&amp;quot;http://pmd.sf.net/ruleset/1.0.0&amp;quot;
         xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
         xsi:schemaLocation=&amp;quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;
         xsi:noNamespaceSchemaLocation=&amp;quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;&amp;gt;
    &amp;lt;description&amp;gt;
        My custom rule set that checks my code...
    &amp;lt;/description&amp;gt;

    &amp;lt;!-- Import the entire unused code rule set --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/unusedcode.xml&amp;quot; /&amp;gt;

    &amp;lt;!--
        Import the entire cyclomatic complexity rule and
        customize the rule configuration.
    --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/codesize.xml/CyclomaticComplexity&amp;quot;&amp;gt;
        &amp;lt;priority&amp;gt;1&amp;lt;/priority&amp;gt;
        &amp;lt;properties&amp;gt;
            &amp;lt;property name=&amp;quot;reportLevel&amp;quot; value=&amp;quot;5&amp;quot; /&amp;gt;
        &amp;lt;/properties&amp;gt;
    &amp;lt;/rule&amp;gt;
&amp;lt;/ruleset&amp;gt;
&lt;/pre&gt;
&lt;p&gt;You should know that PHPMD handles all custom settings additive. This
means that PHPMD keeps the original configuration for every setting that
isn&#039;t customized in a rule reference.&lt;/p&gt;

&lt;h5&gt;Excluding rules from a rule set&lt;/h5&gt;
&lt;p&gt;Finally we would like to reuse the &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/naming.html&quot;&gt;naming&lt;/a&gt; rule set of PHPMD. But we
don&#039;t like the two variable naming rules, so that we must exclude them
from out rule set file. This exclusion can be achieved by declaring an
&lt;code&gt;&amp;lt;exclude /&amp;gt;&lt;/code&gt; element within the rule reference. This element has an
attribute &lt;code&gt;&amp;#64;name&lt;/code&gt; which specifies the name of the excluded rule.&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;
&amp;lt;ruleset name=&amp;quot;My first PHPMD rule set&amp;quot;
         xmlns=&amp;quot;http://pmd.sf.net/ruleset/1.0.0&amp;quot;
         xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
         xsi:schemaLocation=&amp;quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;
         xsi:noNamespaceSchemaLocation=&amp;quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&amp;quot;&amp;gt;
    &amp;lt;description&amp;gt;
        My custom rule set that checks my code...
    &amp;lt;/description&amp;gt;

    &amp;lt;!-- Import the entire unused code rule set --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/unusedcode.xml&amp;quot; /&amp;gt;

    &amp;lt;!--
        Import the entire cyclomatic complexity rule and
        customize the rule configuration.
    --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/codesize.xml/CyclomaticComplexity&amp;quot;&amp;gt;
        &amp;lt;priority&amp;gt;1&amp;lt;/priority&amp;gt;
        &amp;lt;properties&amp;gt;
            &amp;lt;property name=&amp;quot;reportLevel&amp;quot; value=&amp;quot;5&amp;quot; /&amp;gt;
        &amp;lt;/properties&amp;gt;
    &amp;lt;/rule&amp;gt;

    &amp;lt;!-- Import entire naming rule set and exclude rules --&amp;gt;
    &amp;lt;rule ref=&amp;quot;rulesets/naming.xml&amp;quot;&amp;gt;
        &amp;lt;exclude name=&amp;quot;ShortVariable&amp;quot; /&amp;gt;
        &amp;lt;exclude name=&amp;quot;LongVariable&amp;quot; /&amp;gt;
    &amp;lt;/rule&amp;gt;
&amp;lt;/ruleset&amp;gt;
&lt;/pre&gt;

&lt;h5&gt;Conclusion&lt;/h5&gt;
&lt;p&gt;With PHPMD&#039;s rule set syntax it is possible to customize all aspects of
rules for your own needs and you can reuse every existing rule set xml file
in your own set. You should take a look at PHPMD&#039;s rule &lt;a href=&quot;http://www.manuel-pichler.de//phpmd.org/rules/&quot;&gt;documentation&lt;/a&gt;
if it happens that you don&#039;t know what rules exist or you don&#039;t know
exactly, which settings are available for one rule, while you create your
own set of rules. Another good source of information are the rule set
&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2327&amp;amp;entry_id=84&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/browse_code/view/rulesets/&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/browse_code/view/rulesets/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;files&lt;/a&gt; that are shipped with PHPMD.&lt;/p&gt;

&lt;p&gt;
  You can get the latest PHPMD version from its PEAR channel: &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2328&amp;amp;entry_id=84&quot; title=&quot;http://pear.phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.phpmd.org&lt;/a&gt; 
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ pear channel-discover pear.pdepend.org
mapi@arwen ~ $ pear channel-discover pear.phpmd.org
mapi@arwen ~ $ pear install --alldeps phpmd/PHP_PMD-alpha
&lt;/pre&gt;

&lt;p&gt;
  Or from our &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2329&amp;amp;entry_id=84&quot; title=&quot;http://github.com/manuelpichler/phpmd&quot;  onmouseover=&quot;window.status=&#039;http://github.com/manuelpichler/phpmd&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;github repository&lt;/a&gt;:
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ git clone git://github.com/manuelpichler/phpmd.git
&lt;/pre&gt;

&lt;p&gt;
  I would be glad if you file a ticket in PHPMD&#039;s &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2330&amp;amp;entry_id=84&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;issue tracker&lt;/a&gt;
  for all issues and/or enhancements you encounter while testing PHPMD.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 08 Apr 2010 14:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/84-guid.html</guid>
    <category>annotations</category>
<category>customization</category>
<category>phpmd</category>
<category>quality assurance</category>
<category>rule set</category>
<category>static code analysis</category>

</item>
<item>
    <title>PHPMD 0.2.3 released with @SuppressWarnings support and new rule set.</title>
    <link>http://www.manuel-pichler.de/archives/83-PHPMD-0.2.3-released-with-SuppressWarnings-support-and-new-rule-set..html</link>
            <category>php</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/83-PHPMD-0.2.3-released-with-SuppressWarnings-support-and-new-rule-set..html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=83</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=83</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  We are proud to announce the 0.2.3 release of the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2299&amp;amp;entry_id=83&quot; title=&quot;http://phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Mess Detector&lt;/a&gt;, a tool that takes source code and performs various tests to calculate various quality aspects from it. The measured values are a good starting point for future improvements. This release contains some new features, for example support for the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2300&amp;amp;entry_id=83&quot; title=&quot;http://phpmd.org/documentation/suppress-warnings.html&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/documentation/suppress-warnings.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;@SuppressWarnings&lt;/a&gt; annotation, that allows you to exclude single methods or complete classes from PHPMD&#039;s analyzing process. This annotation can be used to suppress a single rule, a group of rules or PHPMD at all.
&lt;/p&gt;

&lt;pre&gt;
/**
 * Suppress all PHPMD warnings for this class.
 *
 * @SuppressWarnings(PHPMD)
 */
class PHPMD_SuppressAll 
{
}

class  PHPMD_SuppressOnMethod
{
    /**
     * Do not warn about the unused parameter $bar.
     *
     * @SuppressWarnings(PHPMD.UnusedFormatParameter)
     */
    public function foo($bar)
    {
    }
}
&lt;/pre&gt;

&lt;p&gt;
  Beside several  bugfixes this release comes with a new set of rules that check the naming of methods, variables etc. against common coding conventions and best practices.
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2301&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/6&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/6&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#6&lt;/a&gt;: PHP Tokenizer required but no error when installing.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2302&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/7&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/7&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#7&lt;/a&gt;: UnusedLocalVariable ruleset incorrectly flags variables as unused when used inside double quoted string. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2303&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/187&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/187&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#187&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2304&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/9&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/9&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#9&lt;/a&gt;: Add support for &quot;Suppress warnings&quot; annotations. Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2305&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/200&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/200&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#200&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2306&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/10&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/10&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#10&lt;/a&gt;: Support for exclude element in rule-set files added.   Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2307&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/189&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/189&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#189&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2308&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/13&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/13&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#13&lt;/a&gt;: Implement naming rules, e.g. short variables, parameter etc.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2309&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/14&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/14&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#14&lt;/a&gt;: ExcessivePublicCount rule should utilize PHP_Depend&#039;s cis metric. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2310&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/203&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/203&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#203&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2311&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/15&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/15&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#15&lt;/a&gt;: ExcessivePublicCount rule is never used. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2312&amp;amp;entry_id=83&quot; title=&quot;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/202&quot;  onmouseover=&quot;window.status=&#039;http://tracker.phpmd.org/php_mess_detector/browse_code/revision/202&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#202&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;

&lt;p&gt;
  You can get the latest PHPMD version from its PEAR channel: &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2313&amp;amp;entry_id=83&quot; title=&quot;http://pear.phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.phpmd.org&lt;/a&gt; 
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ pear channel-discover pear.pdepend.org
mapi@arwen ~ $ pear channel-discover pear.phpmd.org
mapi@arwen ~ $ pear install --alldeps phpmd/PHP_PMD-alpha
&lt;/pre&gt;

&lt;p&gt;
  Or from our &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2314&amp;amp;entry_id=83&quot; title=&quot;http://github.com/manuelpichler/phpmd&quot;  onmouseover=&quot;window.status=&#039;http://github.com/manuelpichler/phpmd&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;github&lt;/a&gt; &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2314&amp;amp;entry_id=83&quot; title=&quot;http://github.com/manuelpichler/phpmd&quot;  onmouseover=&quot;window.status=&#039;http://github.com/manuelpichler/phpmd&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;repository&lt;/a&gt;:
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ git clone git://github.com/manuelpichler/phpmd.git
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Thu, 04 Mar 2010 10:32:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/83-guid.html</guid>
    <category>annotations</category>
<category>phpmd</category>
<category>quality assurance</category>
<category>release announcement</category>
<category>static code analysis</category>

</item>
<item>
    <title>PHPMD wednesday... PHPMD 0.2.2, PHPMD Ant Task, PHPMD on GitHub</title>
    <link>http://www.manuel-pichler.de/archives/78-PHPMD-wednesday...-PHPMD-0.2.2,-PHPMD-Ant-Task,-PHPMD-on-GitHub.html</link>
            <category>php</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/78-PHPMD-wednesday...-PHPMD-0.2.2,-PHPMD-Ant-Task,-PHPMD-on-GitHub.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=78</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=78</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  Today I have released &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2239&amp;amp;entry_id=78&quot; title=&quot;http://phpmd.org/download/index.html&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/download/index.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPMD 0.2.2&lt;/a&gt;, a minor bug fix release that solves some exit code issues in the previous version. Beside this, I am proud to announce the first release of the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2240&amp;amp;entry_id=78&quot; title=&quot;http://phpmd.org/documentation/ant-task.html&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/documentation/ant-task.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPMD Ant Task&lt;/a&gt;. It allows a seamless integration of &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2241&amp;amp;entry_id=78&quot; title=&quot;http://phpmd.org/&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPMD&lt;/a&gt; into your &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2242&amp;amp;entry_id=78&quot; title=&quot;http://ant.apache.org&quot;  onmouseover=&quot;window.status=&#039;http://ant.apache.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Ant&lt;/a&gt; build.xml file. So, please download the PHPMD Ant Task, test it and file bug reports or feature requests in PHPMD&#039;s &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2243&amp;amp;entry_id=78&quot; title=&quot;http://tracker.pdepend.org/php_mess_detector/&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/php_mess_detector/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;issue tracker&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
  You can get the latest PHPMD version from its PEAR channel: &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2244&amp;amp;entry_id=78&quot; title=&quot;http://pear.phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.phpmd.org&lt;/a&gt; 
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ pear channel-discover pear.pdepend.org
mapi@arwen ~ $ pear channel-discover pear.phpmd.org
mapi@arwen ~ $ pear install --alldeps phpmd/PHP_PMD-alpha
&lt;/pre&gt;

&lt;p&gt;
  Beside this two releases there is an additional news. From now on you can find an up-2-date mirror of PHPMD&#039;s subversion repository on &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2245&amp;amp;entry_id=78&quot; title=&quot;http://github.com/manuelpichler/phpmd&quot;  onmouseover=&quot;window.status=&#039;http://github.com/manuelpichler/phpmd&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;github&lt;/a&gt;, so that you can fork PHPMD and participate on in development on these days social coding plattform. 
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ git clone git://github.com/manuelpichler/phpmd.git
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Wed, 20 Jan 2010 21:11:56 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/78-guid.html</guid>
    <category>ant</category>
<category>git</category>
<category>github</category>
<category>phpmd</category>
<category>release announcement</category>

</item>
<item>
    <title>PHP Mess Detector 0.2.1 released</title>
    <link>http://www.manuel-pichler.de/archives/77-PHP-Mess-Detector-0.2.1-released.html</link>
            <category>php</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/77-PHP-Mess-Detector-0.2.1-released.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=77</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=77</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  This is just a small bugfix release of PHPMD. It introduces a small new feature that enables PHPMD&#039;s command line tool to handle multiple input files. This feature was required for some upcoming external features and extensions. Since version 0.2.1 you can call the command line tool of PHPMD with multiple input files and/or directories, separated by comma.
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ phpmd phpmd,systemDaemon text unusedcode
&lt;/pre&gt;

&lt;p&gt;
  You can get the latest PHPMD version from its PEAR channel: &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2238&amp;amp;entry_id=77&quot; title=&quot;http://pear.phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.phpmd.org&lt;/a&gt; 
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ pear channel-discover pear.pdepend.org
mapi@arwen ~ $ pear channel-discover pear.phpmd.org
mapi@arwen ~ $ pear install --alldeps phpmd/PHP_PMD-alpha
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Tue, 05 Jan 2010 22:31:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/77-guid.html</guid>
    <category>bug fix</category>
<category>cli</category>
<category>phpmd</category>
<category>pmd</category>
<category>release announcement</category>

</item>
<item>
    <title>PHP Mess Detector 0.2 released.</title>
    <link>http://www.manuel-pichler.de/archives/73-PHP-Mess-Detector-0.2-released..html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpmd</category>
            <category>phpugdo</category>
            <category>planet-php</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/73-PHP-Mess-Detector-0.2-released..html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=73</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=2.0&amp;type=comments&amp;cid=73</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  Today I have released version 0.2.0 of the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2211&amp;amp;entry_id=73&quot; title=&quot;http://phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Mess Detector&lt;/a&gt; or short &lt;em&gt;PHPMD&lt;/em&gt;. PHPMD is a simple, customizable and user friendly frontend application for &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2212&amp;amp;entry_id=73&quot; title=&quot;http://pdepend.org&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_Depend&lt;/a&gt;. It takes the raw metrics measured by PHP_Depend, compares them with appropriate thresholds and generates a report that lists those software artifacts with potential problems. Such a report can be taken as a basis for human code audits or you can use it as input for an automated build/reporting tool.
&lt;/p&gt;

&lt;p&gt;
  Most concepts behind PHPMD are based on those of the well known Java Tool &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2213&amp;amp;entry_id=73&quot; title=&quot;http://pmd.sourceforge.net&quot;  onmouseover=&quot;window.status=&#039;http://pmd.sourceforge.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PMD&lt;/a&gt;. It uses so called rule set files to organize different sets of rules. There are two purposes that are accomplished by these xml files. The first is to create custom sets of rules which fulfills the projects requirements. The second purpose is the configuration of each rule with thresholds, warning messages and other things. The format of these files is totally borrowed from PMD, so that the reuse existing rule sets in multi language environments should be easy. At the moment PHPMD has two build-in rule sets. One that detects software artifacts with high code size, and the second one detects unused code in your software.
&lt;/p&gt;

&lt;p&gt;
  Now lets start with a small &lt;em&gt;How to use it&lt;/em&gt;. PHPMD can be called from the command line by typing &lt;code&gt;phpmd&lt;/code&gt;, which prints a general help text.
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ phpmd 
Mandatory arguments:
1) A php source code filename or directory
2) A report format
3) A ruleset filename or a comma-separated string of ...

Optional arguments that may be put after the mandato...
--minimumpriority: rule priority threshold; rules with ...
--reportfile: send report output to a file; default to ...
--extensions: comma-separated string of valid source ...
--ignore: comma-separated string of patterns that are ...
&lt;/pre&gt;

&lt;p&gt;
  Now let&#039;s call PHPMD on its own source, with a simple text report on STDOUT and the &lt;code&gt;codesize&lt;/code&gt; ruleset:
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ phpmd ~/phpmd/source text codesize

/home/mapi/phpmd/source/PHP/PMD/RuleSetFactory.php:66 \
  This class has too many methods, consider refactoring it.
/home/mapi/phpmd/source/PHP/PMD/RuleSetFactory.php:267 \
  The method _parseSingleRuleNode() has a Cyclomatic \
  Complexity of 11.
/home/mapi/phpmd/source/PHP/PMD/RuleSetFactory.php:326 \
  The method _parseRuleReferenceNode() has a Cyclomatic \
  Complexity of 10.
&lt;/pre&gt;

&lt;p&gt;
  The &lt;code&gt;--reportfile&lt;/code&gt; option can be used, to redirect the report output into a file. So let us repeat the previous example that writes the report into a file, additionally uses the &lt;code&gt;unusedcode&lt;/code&gt; rule and changes the format from text to xml.
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ phpmd ~/phpmd/source xml codesize,unusedcode \
  --reportfile ~/pmd.xml
mapi@arwen ~ $ cat ~/pmd.xml 
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;
&amp;lt;pmd version=&quot;@package_version@&quot; timestamp=&quot;...&quot;&amp;gt;
  &amp;lt;file name=&quot;.../source/PHP/PMD/RuleSetFactory.php&quot;&amp;gt;
    &amp;lt;violation beginline=&quot;66&quot; endline=&quot;417&quot; rule=&quot;TooManyMet ...&amp;gt;
      This class has too many methods, consider refactoring it.
    &amp;lt;/violation&amp;gt;
    &amp;lt;violation beginline=&quot;267&quot; endline=&quot;315&quot; rule=&quot;Cyclomati ...&amp;gt;
      Method _parseSingleRule() has a Cyclomatic Complexity of 11.
    &amp;lt;/violation&amp;gt;
    &amp;lt;violation beginline=&quot;326&quot; endline=&quot;367&quot; rule=&quot;Cyclomati ...&amp;gt;
      Method _parseRuleReference() has a Cyclomatic Complexity of 10.
    &amp;lt;/violation&amp;gt;
  &amp;lt;/file&amp;gt;
&amp;lt;/pmd&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
  This xml file is compatible with those files generated by &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2213&amp;amp;entry_id=73&quot; title=&quot;http://pmd.sourceforge.net&quot;  onmouseover=&quot;window.status=&#039;http://pmd.sourceforge.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PMD&lt;/a&gt; and &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2219&amp;amp;entry_id=73&quot; title=&quot;http://phpunit.de&quot;  onmouseover=&quot;window.status=&#039;http://phpunit.de&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPUnit&#039;s&lt;/a&gt; deprecated &lt;code&gt;--log-pmd&lt;/code&gt; option. So that it should be no problem to use this files in existing environments like &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2215&amp;amp;entry_id=73&quot; title=&quot;https://hudson.dev.java.net/&quot;  onmouseover=&quot;window.status=&#039;https://hudson.dev.java.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Hudson&lt;/a&gt;, &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2216&amp;amp;entry_id=73&quot; title=&quot;http://cruisecontrol.sourceforge.net/&quot;  onmouseover=&quot;window.status=&#039;http://cruisecontrol.sourceforge.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;CruiseControl&lt;/a&gt; or &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2217&amp;amp;entry_id=73&quot; title=&quot;http://sonar.codehaus.org/&quot;  onmouseover=&quot;window.status=&#039;http://sonar.codehaus.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Sonar&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
  Currently PHPMD supports the following three different report formats: Text, HTML and XML. And it has the build-in rule sets: &lt;code&gt;codesize&lt;/code&gt; and &lt;code&gt;unusedcode&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
  You can get the latest PHPMD version from its PEAR channel: &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2218&amp;amp;entry_id=73&quot; title=&quot;http://pear.phpmd.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.phpmd.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.phpmd.org&lt;/a&gt; 
&lt;/p&gt;

&lt;pre&gt;
mapi@arwen ~ $ pear channel-discover pear.pdepend.org
mapi@arwen ~ $ pear channel-discover pear.phpmd.org
mapi@arwen ~ $ pear install --alldeps phpmd/PHP_PMD-alpha
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Tue, 29 Dec 2009 23:40:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/73-guid.html</guid>
    <category>phpmd</category>
<category>php_depend</category>
<category>pmd</category>
<category>quality assurance</category>
<category>static code analysis</category>

</item>

</channel>
</rss>