<?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 - projects</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>A brief introduction to the Coupling Between Objects metric</title>
    <link>http://www.manuel-pichler.de/archives/97-A-brief-introduction-to-the-Coupling-Between-Objects-metric.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpugdo</category>
            <category>planet-php</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/97-A-brief-introduction-to-the-Coupling-Between-Objects-metric.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=97</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  In this blog post I will give you a brief introduction into the &lt;em&gt;Coupling Between Objects&lt;/em&gt;
  metric,  that is one of the metrics calculated by the static code analysis tool
  &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2407&amp;amp;entry_id=97&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;.
&lt;/p&gt;


&lt;p&gt;
  The &lt;em&gt;Coupling Between Objects&lt;/em&gt; or &lt;em&gt;CBO&lt;/em&gt; metric was originally 
  defined by Chidamber &amp;amp; Kemerer in their IEEE paper &amp;quot;A Metrics  Suite 
  for Object Oriented Design&amp;quot; &lt;a href=&quot;#ckoom&quot; id=&quot;id1&quot;&gt;[1]&lt;/a&gt;. This
  software metric represents the number of other types a class or interface is
  coupled to. The &lt;em&gt;CBO&lt;/em&gt; metric is calculated for classes and interfaces. 
  It counts the unique number of reference types that occur through method 
  calls, method parameters, return types, thrown exceptions and accessed 
  fields. But there is an exception for types that are either a subtype or 
  supertype of the given class, because these types are not included in the 
  calculated &lt;em&gt;CBO&lt;/em&gt; value.
&lt;/p&gt;
&lt;p&gt;
  Excessive coupled classes prevent reuse of existing components and they are
  damaging for a modular, encapsulated software design. To improve the 
  modularity of a software the inter coupling between different classes should
  be kept to a minimum. Beside reusability a high coupling has a second
  drawback, a class that is coupled to other classes is sensitive to changes in
  that classes and as a result it becomes more difficult to maintain and gets
  more error-prone. Additionally it is harder to test a heavly coupled class in
  isolation and it is harder to understand such a class. Therefore you should
  keep the number of dependencies at a minimum.
&lt;/p&gt;

&lt;h5 id=&quot;thresholds&quot;&gt;Thresholds&lt;/h5&gt;
&lt;p&gt;
  Based on their research Sahraoui, Godin and Miceli &lt;a href=&quot;#sgmqa&quot; id=&quot;id2&quot;&gt;[2]&lt;/a&gt; 
  suggest a maximum &lt;em&gt;CBO&lt;/em&gt; value of &lt;em&gt;14&lt;/em&gt;, because higher values 
  have negative impacts on several quality aspects of a class, which includes 
  the maintainability, stability and understandability.
&lt;/p&gt;

&lt;h5 id=&quot;see-also&quot;&gt;See also&lt;/h5&gt;
&lt;dl&gt;
  &lt;dt&gt;
    &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2410&amp;amp;entry_id=97&quot; title=&quot;http://pdepend.org/documentation/software-metrics/efferent-coupling.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/documentation/software-metrics/efferent-coupling.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Efferent Coupling&lt;/a&gt;: 
  &lt;/dt&gt;
  &lt;dd&gt;
    &lt;em&gt;Efferent Coupling&lt;/em&gt; or &lt;em&gt;CE&lt;/em&gt; is a different name for
    the same metric, that is frequently used in the literatur.
  &lt;/dd&gt;
  &lt;dt&gt;
    &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2411&amp;amp;entry_id=97&quot; title=&quot;http://pdepend.org/documentation/software-metrics/afferent-coupling.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/documentation/software-metrics/afferent-coupling.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Afferent Coupling&lt;/a&gt;:
  &lt;/dt&gt;
  &lt;dd&gt;
    The &lt;em&gt;Afferent Coupling&lt;/em&gt; or &lt;em&gt;CA&lt;/em&gt; is a metric that calculates the 
    reverse coupling of a class.
  &lt;/dd&gt;
&lt;/dl&gt;

&lt;h5 id=&quot;bibliography&quot;&gt;Bibliography&lt;/h5&gt;
&lt;dl&gt;
  &lt;dt id=&quot;ckoom&quot;&gt;
    &lt;a href=&quot;#id1&quot;&gt;[1]&lt;/a&gt;
  &lt;/dt&gt;
  &lt;dd&gt;
    &lt;p&gt;
      &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2413&amp;amp;entry_id=97&quot; title=&quot;http://www.iiitd.ac.in/PhD2010/papers/SW_Paper2.pdf&quot;  onmouseover=&quot;window.status=&#039;http://www.iiitd.ac.in/PhD2010/papers/SW_Paper2.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.iiitd.ac.in/PhD2010/papers/SW_Paper2.pdf&lt;/a&gt;
    &lt;/p&gt;
    &lt;p&gt;
      IEEE Transactions on Software Engineering; A Metrics Suite for Object
      Oriented Design; Chidamber &amp;amp; Kemerer, 1994
    &lt;/p&gt;
  &lt;/dd&gt;
  &lt;dt&gt;
    &lt;a href=&quot;#id2&quot;&gt;[2]&lt;/a&gt;
  &lt;/dt&gt;
  &lt;dd&gt;
    &lt;p&gt;
      &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2415&amp;amp;entry_id=97&quot; title=&quot;http://www.iro.umontreal.ca/~sahraouh/papers/ICSM00.pdf&quot;  onmouseover=&quot;window.status=&#039;http://www.iro.umontreal.ca/~sahraouh/papers/ICSM00.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.iro.umontreal.ca/~sahraouh/papers/ICSM00.pdf&lt;/a&gt;
    &lt;/p&gt;
    &lt;p&gt;
      Software Maintenance, 2000. Proceedings. International Conference; Can
      metrics help to bridge the gap between the improvement of OO design
      quality and its automation?; Sahraoui, Godin, Miceli; 2000    
    &lt;/p&gt;
  &lt;/dd&gt;
&lt;/dl&gt;
 
    </content:encoded>

    <pubDate>Tue, 15 Mar 2011 11:59:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/97-guid.html</guid>
    <category>cbo</category>
<category>coupling between objects</category>
<category>php_depend</category>
<category>quality assurance</category>
<category>software metrics</category>

</item>
<item>
    <title>PHP_Depend 0.10.2 released</title>
    <link>http://www.manuel-pichler.de/archives/96-PHP_Depend-0.10.2-released.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>planet-php</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/96-PHP_Depend-0.10.2-released.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=96</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  We are proud to announce release 0.10.2 of &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2400&amp;amp;entry_id=96&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;. Beside two bug fixes this release implements four new software metrics:
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2401&amp;amp;entry_id=96&quot; title=&quot;http://pdepend.org/documentation/software-metrics/efferent-coupling.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/documentation/software-metrics/efferent-coupling.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Efferent Coupling&lt;/a&gt;: The number of classes a class depends on.
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2402&amp;amp;entry_id=96&quot; title=&quot;http://pdepend.org/documentation/software-metrics/afferent-coupling.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/documentation/software-metrics/afferent-coupling.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Afferent Coupling&lt;/a&gt;: The number of classes that depend on a class.
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2403&amp;amp;entry_id=96&quot; title=&quot;http://pdepend.org/documentation/software-metrics/number-of-public-methods.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/documentation/software-metrics/number-of-public-methods.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Number of Public Methods&lt;/a&gt;: The public api/interface of a class.
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2404&amp;amp;entry_id=96&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&lt;/a&gt;: The coupling of a class.
  &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;
  A detailed CHANGELOG can be found on the project&#039;s &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2405&amp;amp;entry_id=96&quot; title=&quot;http://pdepend.org/download/release/0.10.2/changelog.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/download/release/0.10.2/changelog.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;download page&lt;/a&gt; and a complete, detailed description of the newly implemented software metrics in PHP_Depend&#039;s &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2406&amp;amp;entry_id=96&quot; title=&quot;http://pdepend.org/documentation/software-metrics/index.html&quot;  onmouseover=&quot;window.status=&#039;http://pdepend.org/documentation/software-metrics/index.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;metric catalog&lt;/a&gt;.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 28 Feb 2011 11:25:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/96-guid.html</guid>
    <category>php_depend</category>
<category>quality assurance</category>
<category>software metrics</category>
<category>static code analysis</category>

</item>
<item>
    <title>Brief introduction to the Class Interface Size metric</title>
    <link>http://www.manuel-pichler.de/archives/95-Brief-introduction-to-the-Class-Interface-Size-metric.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>planet-php</category>
    
    <comments>http://www.manuel-pichler.de/archives/95-Brief-introduction-to-the-Class-Interface-Size-metric.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=95</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  This blog post will give you a brief introduction into the &lt;em&gt;Class Interface Size&lt;/em&gt; metric, as it is calculated by the static code analysis tool &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2396&amp;amp;entry_id=95&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;.
&lt;/p&gt;

&lt;p&gt;
  The &lt;em&gt;Class Interface Size&lt;/em&gt; or &lt;em&gt;CIS&lt;/em&gt; metric is measure of the 
  public services that a class provides. This metric was orginally defined in 
  the &lt;em&gt;QMOOD&lt;/em&gt; model &lt;a href=&quot;#moodcis&quot; id=&quot;id1&quot;&gt;[1]&lt;/a&gt; by Bansiya &amp;amp; 
  Davis.
&lt;/p&gt; 

&lt;p&gt;
  The orginal version of the &lt;em&gt;CIS&lt;/em&gt; metric was defined as the number of 
  public methods that a class provides. Each of these methods can be seen as a 
  service where surrounding application can send messages to or receive messages 
  from a class.
&lt;/p&gt;

&lt;blockquote&gt;
  &lt;strong&gt;CIS = public(NOM)&lt;/strong&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  A newer variant of the &lt;em&gt;CIS&lt;/em&gt; metric also includes the public attributes
  of a class, because theses properties can also be used to transport messages 
  or information between a class and the surrounding application.
&lt;/p&gt;

&lt;blockquote&gt;
  &lt;strong&gt;CIS = public(NOM) + public(VARS)&lt;/strong&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  PHP_Depend uses the second variant and counts all public methods and 
  attributes declared in a class to calculate its &lt;em&gt;Class Interface Size&lt;/em&gt; 
  metric.
&lt;/p&gt;

&lt;p&gt;
  This metric is a good indicator for the choosen software design. Several
  classes with a high &lt;em&gt;CIS&lt;/em&gt; value are a sure sign that the design of the
  analyzed software prefers composition over inheritance to share common
  functionality between different components. So in most cases a high value is
  a good a sign, because composition increases the reusability and flexibility.
  But there are also situations where wrongly used composition of functionality
  leads to a design that is harder to understand and maintain.
&lt;/p&gt;

&lt;h5 id=&quot;thresholds&quot;&gt;Thresholds&lt;/h5&gt;
&lt;p&gt;
  It is not easy to define good thresholds for this metric, because those values
  heavy depend on the choosen design, e.g. inheritance or composition. But in
  generall we can say that is best practice to limit the public interface that
  can be used to alter the internal state of an object. Therefore we suggest 
  &lt;code&gt;20&lt;/code&gt;
  as a reference point for the upper limit.
&lt;/p&gt;

&lt;h5 id=&quot;bibliography&quot;&gt;Bibliography&lt;/h5&gt;
&lt;dl&gt;
  &lt;dt id=&quot;moodcis&quot;&gt;
    &lt;a href=&quot;#id1&quot;&gt;[1]&lt;/a&gt;
  &lt;/dt&gt;
  &lt;dd&gt;
    &lt;p&gt;
      &lt;a class=&quot;reference external&quot; href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2399&amp;amp;entry_id=95&quot; title=&quot;http://www.ptidej.net/teaching/inf6306/fall09/notes/course4/Bansiya02-QualityModel.pdf&quot;  onmouseover=&quot;window.status=&#039;http://www.ptidej.net/teaching/inf6306/fall09/notes/course4/Bansiya02-QualityModel.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.ptidej.net/teaching/inf6306/fall09/notes/course4/Bansiya02-QualityModel.pdf&lt;/a&gt;
    &lt;/p&gt;
    &lt;p&gt;
      IEEE Transactions on Software Enginerring; &lt;em&gt;Hierarchical Model for 
      Object-Oriented Design Quality Assessment&lt;/em&gt;; Bansiya &amp;amp; Davis; 2002
    &lt;/p&gt;
  &lt;/dd&gt;
&lt;/dl&gt; 
    </content:encoded>

    <pubDate>Fri, 25 Feb 2011 16:50:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/95-guid.html</guid>
    <category>class interface size</category>
<category>php_depend</category>
<category>quality assurance</category>
<category>software metrics</category>

</item>
<item>
    <title>PHP_Depend 0.9.16 bugfix release</title>
    <link>http://www.manuel-pichler.de/archives/93-PHP_Depend-0.9.16-bugfix-release.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/93-PHP_Depend-0.9.16-bugfix-release.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=93</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;Today/Yesterday we have released the bugfix version 0.9.15 and 0.9.16 of
PHP_Depend. With these releases we have closed a critical bug in PHP_Depend&#039;s
handling of namespaces, where identical class names in two different
namespaces resulted in an endless loop, so that the php process died with
a fatal error.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2387&amp;amp;entry_id=93&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/152&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/152&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#152&lt;/a&gt;: Endless loop bug for identical class and parent name. Fixed
in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2388&amp;amp;entry_id=93&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1320&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1320&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1320&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2389&amp;amp;entry_id=93&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/153&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/153&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#153&lt;/a&gt;: Only count those classes and interfaces that are flagged
as user defined types. Fixed in subversion revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2390&amp;amp;entry_id=93&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1327&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1327&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1327&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2391&amp;amp;entry_id=93&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/154&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/154&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#154&lt;/a&gt;: Make execution order of analyzers reproducable.
Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2392&amp;amp;entry_id=93&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1331&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1331&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1331&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;As always, you can get the latest PHP_Depend version from its PEAR channel:
&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2393&amp;amp;entry_id=93&quot; title=&quot;http://pear.pdepend.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.pdepend.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.pdepend.org&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ pear channel-discover pear.pdepend.org
mapi&amp;#64;arwen ~ $ pear install pdepend/PHP_Depend-beta
&lt;/pre&gt;
&lt;p&gt;Or you can fetch the sources from the subversion reposition:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ svn co http://svn.pdepend.org/trunk pdepend
&lt;/pre&gt;
&lt;p&gt;And additionally you can find a repository mirror on github:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Sat, 19 Jun 2010 13:07:40 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/93-guid.html</guid>
    <category>bug fix</category>
<category>php_depend</category>
<category>release announcement</category>

</item>
<item>
    <title>phpUnderControl 0.6.0beta2 released</title>
    <link>http://www.manuel-pichler.de/archives/92-phpUnderControl-0.6.0beta2-released.html</link>
            <category>php</category>
            <category>phpugdo</category>
            <category>phpundercontrol</category>
            <category>planet-php</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/92-phpUnderControl-0.6.0beta2-released.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=92</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  Today I have released the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2382&amp;amp;entry_id=92&quot; title=&quot;http://github.com/manuelpichler/phpUnderControl/tree/0.6.0beta2&quot;  onmouseover=&quot;window.status=&#039;http://github.com/manuelpichler/phpUnderControl/tree/0.6.0beta2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;second beta&lt;/a&gt; version of &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2383&amp;amp;entry_id=92&quot; title=&quot;http://php-under-control.org&quot;  onmouseover=&quot;window.status=&#039;http://php-under-control.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phpUnderControl&lt;/a&gt;. Beside several minor tweaks and bug fixes, this release contains one additional feature I was asked for during the &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2384&amp;amp;entry_id=92&quot; title=&quot;http://it-republik.de/php/phpconference/&quot;  onmouseover=&quot;window.status=&#039;http://it-republik.de/php/phpconference/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;IPC&lt;/a&gt; in Berlin. This feature allows you to specify a maximum number of log entries that will be shown in the generated metric charts. This can be very useful once you have a project with a great amount of builds and the chart rendering gets slower and slower.
&lt;/p&gt;

&lt;p&gt;
  This feature adds a new option &lt;code&gt;--max-number&lt;/code&gt; to phpUnderControl&#039;s &lt;code&gt;chart&lt;/code&gt; command. To rebuild all your charts you can call phpUnderControl&#039;s shell script with the following command:
&lt;/p&gt;

&lt;pre&gt;
  mapi@arwen ~ $ phpuc --force-update --max-number 42 \
                 /opt/cruisecontrol/logs/phpUnderControl \
                 /opt/cruisecontrol/logs/phpUnderControl
&lt;/pre&gt;

&lt;p&gt;
  You can get the latest release of phpUnderControl through its pear channel:
&lt;/p&gt;

&lt;pre&gt;
  mapi@arwen ~ $ pear upgrade --alldeps phpuc/phpUnderControl-0.6.0beta2
  Starting to download phpUnderControl-0.6.0beta2.tgz (546,314 bytes)
  ...................................................................
  .............................done: 546,314 bytes
&lt;/pre&gt;

&lt;p&gt;
  or you can get the latest development version on &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2386&amp;amp;entry_id=92&quot; title=&quot;http://github.com/manuelpichler/phpUnderControl&quot;  onmouseover=&quot;window.status=&#039;http://github.com/manuelpichler/phpUnderControl&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;github&lt;/a&gt;.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 10 Jun 2010 12:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/92-guid.html</guid>
    <category>continuous integration</category>
<category>cruisecontrol</category>
<category>phpundercontrol</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>PHP_Depend 0.9.13 bugfix release</title>
    <link>http://www.manuel-pichler.de/archives/87-PHP_Depend-0.9.13-bugfix-release.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/87-PHP_Depend-0.9.13-bugfix-release.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=87</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;Today we have released the bugfix version 0.9.13 of PHP_Depend, the tool
to measure several software metrics for your PHP application. This release
fixes two critical bugs. One in the tokenizer implementation, which has
modified valid code under test in such a way, that it has become invalid
PHP code. The second fix is related to PHP_Depends&#039;s test code, where a
missing &lt;code&gt;require_once&lt;/code&gt; statement has caused a &lt;code&gt;E_FATAL&lt;/code&gt; while running
the test suite in &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2359&amp;amp;entry_id=87&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; process isolation mode.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2354&amp;amp;entry_id=87&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/145&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/145&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#145&lt;/a&gt;: Incorrect require_once statement in ASTSwitchStatement
source file. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2355&amp;amp;entry_id=87&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1262&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1262&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1262&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2356&amp;amp;entry_id=87&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/150&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/150&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#150&lt;/a&gt;: Invalid nowdoc substitution has produced broken code.
Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2357&amp;amp;entry_id=87&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1266&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1266&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1266&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;As always, you can get the latest PHP_Depend version from its PEAR channel:
&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2358&amp;amp;entry_id=87&quot; title=&quot;http://pear.pdepend.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.pdepend.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.pdepend.org&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ pear channel-discover pear.pdepend.org
mapi&amp;#64;arwen ~ $ pear install pdepend/PHP_Depend-beta
&lt;/pre&gt;
&lt;p&gt;Or you can fetch the sources from the subversion reposition:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ svn co http://svn.pdepend.org/trunk pdepend
&lt;/pre&gt;
&lt;p&gt;And additionally you can find a repository mirror on github:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Mon, 10 May 2010 17:31:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/87-guid.html</guid>
    <category>bug fix</category>
<category>php_depend</category>
<category>release announcement</category>
<category>software metrics</category>
<category>tokenizer</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>PHP_Depend 0.9.12 release</title>
    <link>http://www.manuel-pichler.de/archives/85-PHP_Depend-0.9.12-release.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/85-PHP_Depend-0.9.12-release.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=85</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;I am proud to announce the 0.9.12 release of PHP_Depend. PHP_Depend is a
low level static code analysis tool. It takes the given source and
calculates several software metrics for the code. This data can be used by
software-developers, architects and designers to control the quality of a
software-product without time consuming code audits.&lt;/p&gt;
&lt;p&gt;This new release of PHP_Depend has done a great step into the direction of a
token free PHP_Depend version. This means future versions of PHP_Depend will
work without the need to traverse linear token streams up and down, to measure
metrics. Instead PHP_Depend will rely on it&#039;s internal abstract syntax tree,
that represents the logical structure of the analyzed source code. With this
solution it will be possible to implement several new features that will make
PHP_Depend more useful, for example static callgraph analysis.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2331&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/97&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/97&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#97&lt;/a&gt;: Replace current token approach in CCN- and NPath-Analyzer
with AST-Nodes. Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2332&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1248&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1248&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1248&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2333&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/125&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/125&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#125&lt;/a&gt;: PHP_Depend silently parses list statements. Fixed in
svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2334&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1223&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1223&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1223&lt;/a&gt;. Thanks to Joey Mazzarelli for providing this patch.&lt;/li&gt;
&lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2335&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/126&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/126&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#126&lt;/a&gt;: Generate reproducable node identifiers instead of
random numbers. Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2336&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1244&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1244&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1244&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2337&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/128&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/128&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#128&lt;/a&gt;: Variable variables in foreach statement cause an exception.
Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2338&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1237&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1237&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1237&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2339&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/133&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/133&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#133&lt;/a&gt;: Fatal error: Maximum function nesting level of &#039;100&#039; reached,
aborting! in /usr/share/pear/PHP/Depend/Util/Log.php on line 109. Fixed
in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2340&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1257&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1257&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1257&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2341&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/134&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/134&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#134&lt;/a&gt;: ASTReturnStatement is not derived from ASTStatement. Fixed
in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2342&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1250&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1250&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1250&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2343&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/135&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/135&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#135&lt;/a&gt;: Several Statement classes do not inherit ASTStatement. Fixed
in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2344&amp;amp;entry_id=85&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1255&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1255&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1255&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;As always, you can get the latest PHP_Depend version from its PEAR channel:
&lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2345&amp;amp;entry_id=85&quot; title=&quot;http://pear.pdepend.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.pdepend.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.pdepend.org&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ pear channel-discover pear.pdepend.org
mapi&amp;#64;arwen ~ $ pear install pdepend/PHP_Depend-beta
&lt;/pre&gt;
&lt;p&gt;Or you can fetch the sources from the subversion reposition:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ svn co http://svn.pdepend.org/trunk pdepend
&lt;/pre&gt;
&lt;p&gt;And additionally you can find a repository mirror on github:&lt;/p&gt;
&lt;pre&gt;
mapi&amp;#64;arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Sun, 25 Apr 2010 14:44:15 +0200</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/85-guid.html</guid>
    <category>bug fix</category>
<category>npath complexity</category>
<category>php_depend</category>
<category>release announcement</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>PHP_Depend-0.9.11 released</title>
    <link>http://www.manuel-pichler.de/archives/82-PHP_Depend-0.9.11-released.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpugdo</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/82-PHP_Depend-0.9.11-released.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=82</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
  I have just released version 0.9.11 of PHP_Depend. It contains a few bug fixes and improvements for PHP_Depend.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2291&amp;amp;entry_id=82&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/118&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/118&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#118&lt;/a&gt;: Calculation of the Number Of Overwritten Methods is wrong. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2292&amp;amp;entry_id=82&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1112&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1112&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1112&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;
    Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2293&amp;amp;entry_id=82&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/119&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/119&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#119&lt;/a&gt;: Three test cases fail for all PHP versions prior to 5.3. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2294&amp;amp;entry_id=82&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1114&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1114&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1114&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;
    Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2295&amp;amp;entry_id=82&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/121&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/121&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#121&lt;/a&gt;: Parse arguments of the ASTForeachStatement. Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2296&amp;amp;entry_id=82&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1115&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1115&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1115&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;
    Critical issue in PHP_Depend&#039;s temporary data cache fixed. This bug only occured when running several instances of PHP_Depend in parallel. In this setup the used cache key &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2297&amp;amp;entry_id=82&quot; title=&quot;http://php.net/spl_object_hash&quot;  onmouseover=&quot;window.status=&#039;http://php.net/spl_object_hash&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;spl_object_hash()&lt;/a&gt; has caused a corrupted cache, because different php process instances have written different data to the same cache file.
  &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;
  As always, you can get the latest PHP_Depend version from its PEAR channel: &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2298&amp;amp;entry_id=82&quot; title=&quot;http://pear.pdepend.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.pdepend.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.pdepend.org&lt;/a&gt;:
&lt;/p&gt;
&lt;pre&gt;
  mapi&amp;#64;arwen ~ $ pear channel-discover pear.pdepend.org
  mapi&amp;#64;arwen ~ $ pear install pdepend/PHP_Depend-beta
&lt;/pre&gt;
&lt;p&gt;
  Or you can fetch the sources from the subversion reposition:
&lt;/p&gt;
&lt;pre&gt;
  mapi&amp;#64;arwen ~ $ svn co http://svn.pdepend.org/branches/0.9.0/
&lt;/pre&gt;
&lt;p&gt;
  And additionally you can find a repository mirror on github:
&lt;/p&gt;
&lt;pre&gt;
  mapi&amp;#64;arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Tue, 02 Mar 2010 21:08:03 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/82-guid.html</guid>
    <category>bug fix</category>
<category>php_depend</category>
<category>release announcement</category>
<category>software metrics</category>
<category>static code analysis</category>

</item>
<item>
    <title>PHP_Depend-0.9.10 released</title>
    <link>http://www.manuel-pichler.de/archives/81-PHP_Depend-0.9.10-released.html</link>
            <category>php</category>
            <category>php_depend</category>
            <category>phpugdo</category>
            <category>planet-php</category>
            <category>projects</category>
    
    <comments>http://www.manuel-pichler.de/archives/81-PHP_Depend-0.9.10-released.html#comments</comments>
    <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=81</wfw:comment>

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

    <author>nospam@example.com (Manuel Pichler)</author>
    <content:encoded>
    &lt;p&gt;
I have just released the bug fix version 0.9.10 of PHP_Depend. This
release contains several bug fixes and improvements for PHP_Depend.
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2272&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/72&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/72&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#72&lt;/a&gt;__: Add NOAM, NOOM and NOCC metrics. Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2273&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1084&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1084&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1084&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2274&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/74&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/74&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#74&lt;/a&gt;: Make CRAP-index available. Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2275&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1063&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1063&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1063&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Implemented &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2276&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/105&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/105&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#105&lt;/a&gt;: Support for deep search implement. Implemented in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2277&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1078&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1078&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1078&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2278&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/106&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/106&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#106&lt;/a&gt;: Filter algorithm is broken for namespaced internal classes. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2279&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1039&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1039&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1039&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2280&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/110&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/110&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#110&lt;/a&gt;: Duplicate &quot;coupling&quot; directory in test code. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2281&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1032&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1032&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1032&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2282&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/111&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/111&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#111&lt;/a&gt;: Dynamic Strings are treated as literal strings. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2283&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1037&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1037&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1037&lt;/a&gt;. &lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2284&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/114&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/114&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#114&lt;/a&gt;: Parsing error caused by complex string expressions fixed. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2285&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1068&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1068&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1068&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2286&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/115&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/115&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#115&lt;/a&gt;: Summary and PHPUnit Report lists unknown classes. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2287&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1101&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1101&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1101&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Fixed &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2288&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/issue_tracker/issue/116&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/issue_tracker/issue/116&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#116&lt;/a&gt;: Returns reference results in parsing error. Fixed in svn revision &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2289&amp;amp;entry_id=81&quot; title=&quot;http://tracker.pdepend.org/pdepend/browse_code/revision/1090&quot;  onmouseover=&quot;window.status=&#039;http://tracker.pdepend.org/pdepend/browse_code/revision/1090&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#1090&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Performance intensive calculation result cached.&lt;/li&gt;
  &lt;li&gt;Test code restructured and improved.&lt;/li&gt;
  &lt;li&gt;Concurrency issue for parallel running pdepend instances fixed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
As always, you can get the latest PHP_Depend version from its PEAR channel: &lt;a href=&quot;http://www.manuel-pichler.de/exit.php?url_id=2290&amp;amp;entry_id=81&quot; title=&quot;http://pear.pdepend.org&quot;  onmouseover=&quot;window.status=&#039;http://pear.pdepend.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pear.pdepend.org&lt;/a&gt;:
&lt;/p&gt;
&lt;pre&gt;
  mapi@arwen ~ $ pear channel-discover pear.pdepend.org
  mapi@arwen ~ $ pear install pdepend/PHP_Depend-beta
&lt;/pre&gt;
&lt;p&gt;
Or you can fetch the sources from the subversion reposition:
&lt;/p&gt;
&lt;pre&gt;
  mapi@arwen ~ $ svn co http://svn.pdepend.org/branches/0.9.0/
&lt;/pre&gt;
&lt;p&gt;
And additionally you can find a repository mirror on github:
&lt;/p&gt;
&lt;pre&gt;
  mapi@arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Tue, 23 Feb 2010 20:36:01 +0100</pubDate>
    <guid isPermaLink="false">http://www.manuel-pichler.de/archives/81-guid.html</guid>
    <category>php</category>
<category>php5</category>
<category>php_depend</category>
<category>quality assurance</category>
<category>release announcement</category>
<category>software metrics</category>
<category>static code analysis</category>

</item>

</channel>
</rss>