<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    
    <link href="http://manuel-pichler.de/feeds/atom.xml" rel="self" title="Manuel Pichler" type="application/atom+xml" />
    <link href="http://www.manuel-pichler.de/"                        rel="alternate"    title="Manuel Pichler" type="text/html" />
    <link href="http://www.manuel-pichler.de/rss.php?version=2.0"     rel="alternate"    title="Manuel Pichler" type="application/rss+xml" />
    <title type="html">Manuel Pichler</title>
    <subtitle type="html">Trust is good, (phpUnder)Control is better.</subtitle>
    
    <id>http://www.manuel-pichler.de/</id>
    <updated>2011-03-21T10:44:22Z</updated>
    <generator uri="http://www.s9y.org/" version="1.6">Serendipity 1.6 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://www.manuel-pichler.de/archives/98-PHPMD-1.1.0-released.html" rel="alternate" title="PHPMD 1.1.0 released" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2011-03-21T10:42:15Z</published>
        <updated>2011-03-21T10:44:22Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=98</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/13-phpmd" label="phpmd" term="phpmd" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/98-guid.html</id>
        <title type="html">PHPMD 1.1.0 released</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  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 <a href="http://www.manuel-pichler.de/exit.php?url=aHR0cDovL3BkZXBlbmQub3JnL2RvY3VtZW50YXRpb24vc29mdHdhcmUtbWV0cmljcy9jb3VwbGluZy1iZXR3ZWVuLW9iamVjdHMuaHRtbA==&amp;entry_id=98" title="http://pdepend.org/documentation/software-metrics/coupling-between-objects.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/coupling-between-objects.html';return true;" onmouseout="window.status='';return true;">Coupling
  Between Objects (CBO)</a> metric to detect strongly coupled classes. The second
  one detects the usage of PHP's questionable <code>goto</code> 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's test suite, so that PHPMD's tests
  should now work with PHPUnit 3.4.x and 3.5.x without deprecated warnings.
</p>

<h5 id="phpmd110-features">Features</h5>
<ul>
  <li>
    Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2416&amp;entry_id=98" title="https://www.pivotaltracker.com/story/show/10474873"  onmouseover="window.status='https://www.pivotaltracker.com/story/show/10474873';return true;" onmouseout="window.status='';return true;">#10474873</a>: 
    Add rule for PHP's goto statement. Implemented with commit <a href="http://www.manuel-pichler.de/exit.php?url_id=2417&amp;entry_id=98" title="https://github.com/phpmd/phpmd/commit/2745a20"  onmouseover="window.status='https://github.com/phpmd/phpmd/commit/2745a20';return true;" onmouseout="window.status='';return true;">#2745a20</a>.
  </li>
  <li>
    Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2418&amp;entry_id=98" title="https://www.pivotaltracker.com/story/show/10474987"  onmouseover="window.status='https://www.pivotaltracker.com/story/show/10474987';return true;" onmouseout="window.status='';return true;">#10474987</a>: 
    Implement rule for CBO metric. Implemented with commit <a href="http://www.manuel-pichler.de/exit.php?url_id=2419&amp;entry_id=98" title="https://github.com/phpmd/phpmd/commit/14277b4"  onmouseover="window.status='https://github.com/phpmd/phpmd/commit/14277b4';return true;" onmouseout="window.status='';return true;">#14277b4</a>.
  </li>
  <li>
    Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2420&amp;entry_id=98" title="https://www.pivotaltracker.com/story/show/11012465"  onmouseover="window.status='https://www.pivotaltracker.com/story/show/11012465';return true;" onmouseout="window.status='';return true;">#11012465</a>: 
    Replace deprecated PHPUnit features in test suite. Implemented with commit <a href="http://www.manuel-pichler.de/exit.php?url_id=2421&amp;entry_id=98" title="https://github.com/phpmd/phpmd/commit/4adb88d"  onmouseover="window.status='https://github.com/phpmd/phpmd/commit/4adb88d';return true;" onmouseout="window.status='';return true;">#4adb88d</a>.
  </li>
</ul>

</div>

<h5 id="phpmd110-bugfixes">Bugfixes</h5>
<ul>
  <li>
    Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2422&amp;entry_id=98" title="https://www.pivotaltracker.com/story/show/10096717"  onmouseover="window.status='https://www.pivotaltracker.com/story/show/10096717';return true;" onmouseout="window.status='';return true;">#10096717</a>: 
    LongVariable rule should not apply on private properties. Fixed with commit <a href="http://www.manuel-pichler.de/exit.php?url_id=2423&amp;entry_id=98" title="https://github.com/phpmd/phpmd/commit/f063bc9"  onmouseover="window.status='https://github.com/phpmd/phpmd/commit/f063bc9';return true;" onmouseout="window.status='';return true;">#f063bc9</a>.
  </li>
</ul>

<h5 id="phpmd110-download">Download</h5>
<p>
  You can download release 1.1.0 through PHPMD's <a href="http://www.manuel-pichler.de/exit.php?url_id=2424&amp;entry_id=98" title="http://pear.phpmd.org"  onmouseover="window.status='http://pear.phpmd.org';return true;" onmouseout="window.status='';return true;">PEAR Channel Server</a>
  or you can download the release as a <a href="http://www.manuel-pichler.de/exit.php?url_id=2425&amp;entry_id=98" title="http://static.phpmd.org/php/1.1.0/phpmd.phar"  onmouseover="window.status='http://static.phpmd.org/php/1.1.0/phpmd.phar';return true;" onmouseout="window.status='';return true;">Phar archive</a>
</p> 
            </div>
        </content>
        <dc:subject>cbo</dc:subject>
<dc:subject>phpmd</dc:subject>
<dc:subject>quality assurance</dc:subject>
<dc:subject>release announcement</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/97-A-brief-introduction-to-the-Coupling-Between-Objects-metric.html" rel="alternate" title="A brief introduction to the Coupling Between Objects metric" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2011-03-15T10:59:00Z</published>
        <updated>2011-03-15T10:59:22Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=97</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/8-planet-php" label="planet-php" term="planet-php" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/97-guid.html</id>
        <title type="html">A brief introduction to the Coupling Between Objects metric</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  In this blog post I will give you a brief introduction into the <em>Coupling Between Objects</em>
  metric,  that is one of the metrics calculated by the static code analysis tool
  <a href="http://www.manuel-pichler.de/exit.php?url_id=2407&amp;entry_id=97" title="http://pdepend.org"  onmouseover="window.status='http://pdepend.org';return true;" onmouseout="window.status='';return true;">PHP_Depend</a>.
</p>


<p>
  The <em>Coupling Between Objects</em> or <em>CBO</em> metric was originally 
  defined by Chidamber &amp; Kemerer in their IEEE paper &quot;A Metrics  Suite 
  for Object Oriented Design&quot; <a href="#ckoom" id="id1">[1]</a>. This
  software metric represents the number of other types a class or interface is
  coupled to. The <em>CBO</em> 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 <em>CBO</em> value.
</p>
<p>
  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.
</p>

<h5 id="thresholds">Thresholds</h5>
<p>
  Based on their research Sahraoui, Godin and Miceli <a href="#sgmqa" id="id2">[2]</a> 
  suggest a maximum <em>CBO</em> value of <em>14</em>, because higher values 
  have negative impacts on several quality aspects of a class, which includes 
  the maintainability, stability and understandability.
</p>

<h5 id="see-also">See also</h5>
<dl>
  <dt>
    <a href="http://www.manuel-pichler.de/exit.php?url_id=2410&amp;entry_id=97" title="http://pdepend.org/documentation/software-metrics/efferent-coupling.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/efferent-coupling.html';return true;" onmouseout="window.status='';return true;">Efferent Coupling</a>: 
  </dt>
  <dd>
    <em>Efferent Coupling</em> or <em>CE</em> is a different name for
    the same metric, that is frequently used in the literatur.
  </dd>
  <dt>
    <a href="http://www.manuel-pichler.de/exit.php?url_id=2411&amp;entry_id=97" title="http://pdepend.org/documentation/software-metrics/afferent-coupling.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/afferent-coupling.html';return true;" onmouseout="window.status='';return true;">Afferent Coupling</a>:
  </dt>
  <dd>
    The <em>Afferent Coupling</em> or <em>CA</em> is a metric that calculates the 
    reverse coupling of a class.
  </dd>
</dl>

<h5 id="bibliography">Bibliography</h5>
<dl>
  <dt id="ckoom">
    <a href="#id1">[1]</a>
  </dt>
  <dd>
    <p>
      <a href="http://www.manuel-pichler.de/exit.php?url_id=2413&amp;entry_id=97" title="http://www.iiitd.ac.in/PhD2010/papers/SW_Paper2.pdf"  onmouseover="window.status='http://www.iiitd.ac.in/PhD2010/papers/SW_Paper2.pdf';return true;" onmouseout="window.status='';return true;">http://www.iiitd.ac.in/PhD2010/papers/SW_Paper2.pdf</a>
    </p>
    <p>
      IEEE Transactions on Software Engineering; A Metrics Suite for Object
      Oriented Design; Chidamber &amp; Kemerer, 1994
    </p>
  </dd>
  <dt>
    <a href="#id2">[2]</a>
  </dt>
  <dd>
    <p>
      <a href="http://www.manuel-pichler.de/exit.php?url_id=2415&amp;entry_id=97" title="http://www.iro.umontreal.ca/~sahraouh/papers/ICSM00.pdf"  onmouseover="window.status='http://www.iro.umontreal.ca/~sahraouh/papers/ICSM00.pdf';return true;" onmouseout="window.status='';return true;">http://www.iro.umontreal.ca/~sahraouh/papers/ICSM00.pdf</a>
    </p>
    <p>
      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    
    </p>
  </dd>
</dl>
 
            </div>
        </content>
        <dc:subject>cbo</dc:subject>
<dc:subject>coupling between objects</dc:subject>
<dc:subject>php_depend</dc:subject>
<dc:subject>quality assurance</dc:subject>
<dc:subject>software metrics</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/96-PHP_Depend-0.10.2-released.html" rel="alternate" title="PHP_Depend 0.10.2 released" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2011-02-28T10:25:00Z</published>
        <updated>2011-02-28T10:25:56Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/8-planet-php" label="planet-php" term="planet-php" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/96-guid.html</id>
        <title type="html">PHP_Depend 0.10.2 released</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  We are proud to announce release 0.10.2 of <a href="http://www.manuel-pichler.de/exit.php?url_id=2400&amp;entry_id=96" title="http://pdepend.org"  onmouseover="window.status='http://pdepend.org';return true;" onmouseout="window.status='';return true;">PHP_Depend</a>. Beside two bug fixes this release implements four new software metrics:
</p>

<ul>
  <li>
    <a href="http://www.manuel-pichler.de/exit.php?url_id=2401&amp;entry_id=96" title="http://pdepend.org/documentation/software-metrics/efferent-coupling.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/efferent-coupling.html';return true;" onmouseout="window.status='';return true;">Efferent Coupling</a>: The number of classes a class depends on.
  </li>
  <li>
    <a href="http://www.manuel-pichler.de/exit.php?url_id=2402&amp;entry_id=96" title="http://pdepend.org/documentation/software-metrics/afferent-coupling.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/afferent-coupling.html';return true;" onmouseout="window.status='';return true;">Afferent Coupling</a>: The number of classes that depend on a class.
  </li>
  <li>
    <a href="http://www.manuel-pichler.de/exit.php?url_id=2403&amp;entry_id=96" title="http://pdepend.org/documentation/software-metrics/number-of-public-methods.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/number-of-public-methods.html';return true;" onmouseout="window.status='';return true;">Number of Public Methods</a>: The public api/interface of a class.
  </li>
  <li>
    <a href="http://www.manuel-pichler.de/exit.php?url_id=2404&amp;entry_id=96" title="http://pdepend.org/documentation/software-metrics/coupling-between-objects.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/coupling-between-objects.html';return true;" onmouseout="window.status='';return true;">Coupling Between Objects</a>: The coupling of a class.
  </li>
</ul>
<br />
<p>
  A detailed CHANGELOG can be found on the project's <a href="http://www.manuel-pichler.de/exit.php?url_id=2405&amp;entry_id=96" title="http://pdepend.org/download/release/0.10.2/changelog.html"  onmouseover="window.status='http://pdepend.org/download/release/0.10.2/changelog.html';return true;" onmouseout="window.status='';return true;">download page</a> and a complete, detailed description of the newly implemented software metrics in PHP_Depend's <a href="http://www.manuel-pichler.de/exit.php?url_id=2406&amp;entry_id=96" title="http://pdepend.org/documentation/software-metrics/index.html"  onmouseover="window.status='http://pdepend.org/documentation/software-metrics/index.html';return true;" onmouseout="window.status='';return true;">metric catalog</a>.
</p> 
            </div>
        </content>
        <dc:subject>php_depend</dc:subject>
<dc:subject>quality assurance</dc:subject>
<dc:subject>software metrics</dc:subject>
<dc:subject>static code analysis</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/95-Brief-introduction-to-the-Class-Interface-Size-metric.html" rel="alternate" title="Brief introduction to the Class Interface Size metric" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2011-02-25T15:50:00Z</published>
        <updated>2011-02-25T15:51:57Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=95</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/8-planet-php" label="planet-php" term="planet-php" />
    
        <id>http://www.manuel-pichler.de/archives/95-guid.html</id>
        <title type="html">Brief introduction to the Class Interface Size metric</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  This blog post will give you a brief introduction into the <em>Class Interface Size</em> metric, as it is calculated by the static code analysis tool <a href="http://www.manuel-pichler.de/exit.php?url_id=2396&amp;entry_id=95" title="http://pdepend.org"  onmouseover="window.status='http://pdepend.org';return true;" onmouseout="window.status='';return true;">PHP_Depend</a>.
</p>

<p>
  The <em>Class Interface Size</em> or <em>CIS</em> metric is measure of the 
  public services that a class provides. This metric was orginally defined in 
  the <em>QMOOD</em> model <a href="#moodcis" id="id1">[1]</a> by Bansiya &amp; 
  Davis.
</p> 

<p>
  The orginal version of the <em>CIS</em> 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.
</p>

<blockquote>
  <strong>CIS = public(NOM)</strong>
</blockquote>

<p>
  A newer variant of the <em>CIS</em> 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.
</p>

<blockquote>
  <strong>CIS = public(NOM) + public(VARS)</strong>
</blockquote>

<p>
  PHP_Depend uses the second variant and counts all public methods and 
  attributes declared in a class to calculate its <em>Class Interface Size</em> 
  metric.
</p>

<p>
  This metric is a good indicator for the choosen software design. Several
  classes with a high <em>CIS</em> 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.
</p>

<h5 id="thresholds">Thresholds</h5>
<p>
  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 
  <code>20</code>
  as a reference point for the upper limit.
</p>

<h5 id="bibliography">Bibliography</h5>
<dl>
  <dt id="moodcis">
    <a href="#id1">[1]</a>
  </dt>
  <dd>
    <p>
      <a class="reference external" href="http://www.manuel-pichler.de/exit.php?url_id=2399&amp;entry_id=95" title="http://www.ptidej.net/teaching/inf6306/fall09/notes/course4/Bansiya02-QualityModel.pdf"  onmouseover="window.status='http://www.ptidej.net/teaching/inf6306/fall09/notes/course4/Bansiya02-QualityModel.pdf';return true;" onmouseout="window.status='';return true;">http://www.ptidej.net/teaching/inf6306/fall09/notes/course4/Bansiya02-QualityModel.pdf</a>
    </p>
    <p>
      IEEE Transactions on Software Enginerring; <em>Hierarchical Model for 
      Object-Oriented Design Quality Assessment</em>; Bansiya &amp; Davis; 2002
    </p>
  </dd>
</dl> 
            </div>
        </content>
        <dc:subject>class interface size</dc:subject>
<dc:subject>php_depend</dc:subject>
<dc:subject>quality assurance</dc:subject>
<dc:subject>software metrics</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/94-Slides-of-my-Understanding-Software-Metrics-talk-online.html" rel="alternate" title="Slides of my &quot;Understanding Software Metrics&quot; talk online" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-08-22T08:34:13Z</published>
        <updated>2010-08-25T20:42:23Z</updated>
        <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=94</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=94</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
    
        <id>http://www.manuel-pichler.de/archives/94-guid.html</id>
        <title type="html">Slides of my &quot;Understanding Software Metrics&quot; talk online</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  I have just published the <a href="http://www.manuel-pichler.de/stuff/slides/2010-08-21-understanding_software_metrics.pdf">slides</a> from my "Understanding Software Metrics" talk at <a href="http://www.manuel-pichler.de/exit.php?url_id=2395&amp;entry_id=94" title="http://froscon.de/"  onmouseover="window.status='http://froscon.de/';return true;" onmouseout="window.status='';return true;">FrOSCon</a> 2010.
</p> 
            </div>
        </content>
        <dc:subject>conference</dc:subject>
<dc:subject>cyclomatic complexity</dc:subject>
<dc:subject>npath complexity</dc:subject>
<dc:subject>quality assurance</dc:subject>
<dc:subject>software metrics</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/93-PHP_Depend-0.9.16-bugfix-release.html" rel="alternate" title="PHP_Depend 0.9.16 bugfix release" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-06-19T11:07:40Z</published>
        <updated>2010-06-19T11:13:05Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=93</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/93-guid.html</id>
        <title type="html">PHP_Depend 0.9.16 bugfix release</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>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'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.</p>
<ul>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2387&amp;entry_id=93" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/152"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/152';return true;" onmouseout="window.status='';return true;">#152</a>: Endless loop bug for identical class and parent name. Fixed
in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2388&amp;entry_id=93" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1320"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1320';return true;" onmouseout="window.status='';return true;">#1320</a>.</li>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2389&amp;entry_id=93" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/153"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/153';return true;" onmouseout="window.status='';return true;">#153</a>: Only count those classes and interfaces that are flagged
as user defined types. Fixed in subversion revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2390&amp;entry_id=93" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1327"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1327';return true;" onmouseout="window.status='';return true;">#1327</a>.</li>
<li>Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2391&amp;entry_id=93" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/154"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/154';return true;" onmouseout="window.status='';return true;">#154</a>: Make execution order of analyzers reproducable.
Implemented in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2392&amp;entry_id=93" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1331"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1331';return true;" onmouseout="window.status='';return true;">#1331</a>.</li>
</ul>
<br />
<p>As always, you can get the latest PHP_Depend version from its PEAR channel:
<a href="http://www.manuel-pichler.de/exit.php?url_id=2393&amp;entry_id=93" title="http://pear.pdepend.org"  onmouseover="window.status='http://pear.pdepend.org';return true;" onmouseout="window.status='';return true;">pear.pdepend.org</a>:</p>
<pre>
mapi&#64;arwen ~ $ pear channel-discover pear.pdepend.org
mapi&#64;arwen ~ $ pear install pdepend/PHP_Depend-beta
</pre>
<p>Or you can fetch the sources from the subversion reposition:</p>
<pre>
mapi&#64;arwen ~ $ svn co http://svn.pdepend.org/trunk pdepend
</pre>
<p>And additionally you can find a repository mirror on github:</p>
<pre>
mapi&#64;arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
</pre> 
            </div>
        </content>
        <dc:subject>bug fix</dc:subject>
<dc:subject>php_depend</dc:subject>
<dc:subject>release announcement</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/92-phpUnderControl-0.6.0beta2-released.html" rel="alternate" title="phpUnderControl 0.6.0beta2 released" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-06-10T10:25:00Z</published>
        <updated>2010-06-10T10:35:55Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=92</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/10-phpundercontrol" label="phpundercontrol" term="phpundercontrol" />
            <category scheme="http://www.manuel-pichler.de/categories/8-planet-php" label="planet-php" term="planet-php" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/92-guid.html</id>
        <title type="html">phpUnderControl 0.6.0beta2 released</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  Today I have released the <a href="http://www.manuel-pichler.de/exit.php?url_id=2382&amp;entry_id=92" title="http://github.com/manuelpichler/phpUnderControl/tree/0.6.0beta2"  onmouseover="window.status='http://github.com/manuelpichler/phpUnderControl/tree/0.6.0beta2';return true;" onmouseout="window.status='';return true;">second beta</a> version of <a href="http://www.manuel-pichler.de/exit.php?url_id=2383&amp;entry_id=92" title="http://php-under-control.org"  onmouseover="window.status='http://php-under-control.org';return true;" onmouseout="window.status='';return true;">phpUnderControl</a>. Beside several minor tweaks and bug fixes, this release contains one additional feature I was asked for during the <a href="http://www.manuel-pichler.de/exit.php?url_id=2384&amp;entry_id=92" title="http://it-republik.de/php/phpconference/"  onmouseover="window.status='http://it-republik.de/php/phpconference/';return true;" onmouseout="window.status='';return true;">IPC</a> 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.
</p>

<p>
  This feature adds a new option <code>--max-number</code> to phpUnderControl's <code>chart</code> command. To rebuild all your charts you can call phpUnderControl's shell script with the following command:
</p>

<pre>
  mapi@arwen ~ $ phpuc --force-update --max-number 42 \
                 /opt/cruisecontrol/logs/phpUnderControl \
                 /opt/cruisecontrol/logs/phpUnderControl
</pre>

<p>
  You can get the latest release of phpUnderControl through its pear channel:
</p>

<pre>
  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
</pre>

<p>
  or you can get the latest development version on <a href="http://www.manuel-pichler.de/exit.php?url_id=2386&amp;entry_id=92" title="http://github.com/manuelpichler/phpUnderControl"  onmouseover="window.status='http://github.com/manuelpichler/phpUnderControl';return true;" onmouseout="window.status='';return true;">github</a>.
</p> 
            </div>
        </content>
        <dc:subject>continuous integration</dc:subject>
<dc:subject>cruisecontrol</dc:subject>
<dc:subject>phpundercontrol</dc:subject>
<dc:subject>release announcement</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/91-Presenting-the-first-Qafoo-Service-Zeta-Components.html" rel="alternate" title="Presenting the first Qafoo Service - Zeta Components" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-05-27T08:56:00Z</published>
        <updated>2010-05-27T10:01:31Z</updated>
        <wfw:comment>http://www.manuel-pichler.de/wfwcomment.php?cid=91</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.manuel-pichler.de/rss.php?version=atom1.0&amp;type=comments&amp;cid=91</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/8-planet-php" label="planet-php" term="planet-php" />
            <category scheme="http://www.manuel-pichler.de/categories/14-Qafoo" label="Qafoo" term="Qafoo" />
    
        <id>http://www.manuel-pichler.de/archives/91-guid.html</id>
        <title type="html">Presenting the first Qafoo Service - Zeta Components</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  Now that the founding of the <a href="http://www.manuel-pichler.de/exit.php?url_id=2372&amp;entry_id=91" title="http://qafoo.com"  onmouseover="window.status='http://qafoo.com';return true;" onmouseout="window.status='';return true;">Qafoo - Passion for software quality</a> company is announced, it is time to present the consulting services which we will provide around the quality lifecycle of PHP applications.
</p>
<p>
  The first series of services that we will provide is all around the high quality component library <a href="http://www.manuel-pichler.de/exit.php?url_id=2373&amp;entry_id=91" title="http://incubator.apache.org/projects/zetacomponents.html"  onmouseover="window.status='http://incubator.apache.org/projects/zetacomponents.html';return true;" onmouseout="window.status='';return true;">Zeta Components</a>, formally known as <a href="http://www.manuel-pichler.de/exit.php?url_id=2374&amp;entry_id=91" title="http://ezcomponents.org"  onmouseover="window.status='http://ezcomponents.org';return true;" onmouseout="window.status='';return true;">eZ Components</a>. The Zeta Components provide a loosely coupled set of unique and well thought out features, like the WebDAV server implementation, the Graph component which makes the generation of appealing charts very easy, or the widely used Mail component. Other aspects of the <em>Zeta Components</em>, which highlight our quality claim for the <a href="http://www.manuel-pichler.de/exit.php?url_id=2372&amp;entry_id=91" title="http://qafoo.com"  onmouseover="window.status='http://qafoo.com';return true;" onmouseout="window.status='';return true;">Qafoo GmbH</a>, are the excessive documentation and the very high test coverage, which guarantees a consistently good product quality. Another key benefit of the <em>Zeta Components</em> are their loosely coupled structure, so that you can cherry pick some of the components and integrate them in your current application or framework infrastructure.
</p>
<p>
  Based on the profound knowledge of <a href="http://www.manuel-pichler.de/exit.php?url_id=2380&amp;entry_id=91" title="http://schlitt.info"  onmouseover="window.status='http://schlitt.info';return true;" onmouseout="window.status='';return true;">Toby</a> and <a href="http://www.manuel-pichler.de/exit.php?url_id=2381&amp;entry_id=91" title="http://kore-nordmann.de"  onmouseover="window.status='http://kore-nordmann.de';return true;" onmouseout="window.status='';return true;">Kore</a>, two core developers behind the components for last five years, we will offer professional trainings and support that is backed by a company. Furthermore we provide paid-development and customization of the components to your own special needs.
</p>
<p>
  Another point that speaks for the use of Zeta components is that the components are currently on their way to become an official project under the umbrella of the <a href="http://www.manuel-pichler.de/exit.php?url_id=2378&amp;entry_id=91" title="http://apache.org"  onmouseover="window.status='http://apache.org';return true;" onmouseout="window.status='';return true;">Apache Software Foundation</a>, which guarantees a free use of the components, ensured by a stable legal basis.
</p>
<p>
  So if you would like to use the <em>Zeta Components</em> for your projects or you are interested in a custom training, send us a mail to <a href="mailto:contact@qafoo.com">contact&#64;qafoo.com</a>.
</p> 
            </div>
        </content>
        <dc:subject>apache software foundation</dc:subject>
<dc:subject>consulting</dc:subject>
<dc:subject>ezcomponents</dc:subject>
<dc:subject>kore</dc:subject>
<dc:subject>qafoo</dc:subject>
<dc:subject>toby</dc:subject>
<dc:subject>zeta components</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/88-Artikel-zum-Thema-Softwaremetriken.html" rel="alternate" title="Artikel zum Thema Softwaremetriken" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-05-12T07:04:12Z</published>
        <updated>2010-05-12T07:04:12Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=88</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/13-phpmd" label="phpmd" term="phpmd" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/10-phpundercontrol" label="phpundercontrol" term="phpundercontrol" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
            <category scheme="http://www.manuel-pichler.de/categories/12-staticReflection" label="staticReflection" term="staticReflection" />
    
        <id>http://www.manuel-pichler.de/archives/88-guid.html</id>
        <title type="html">Artikel zum Thema Softwaremetriken</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  <em>This blog post is in German as the mentioned article was published in German.</em>
</p>

<p>
In der heute erschienenen Ausgabe <a href="http://www.manuel-pichler.de/exit.php?url_id=2360&amp;entry_id=88" title="http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html"  onmouseover="window.status='http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html';return true;" onmouseout="window.status='';return true;">4.10</a> des <a href="http://www.manuel-pichler.de/exit.php?url_id=2361&amp;entry_id=88" title="http://it-republik.de/php/php-magazin/"  onmouseover="window.status='http://it-republik.de/php/php-magazin/';return true;" onmouseout="window.status='';return true;">PHP Magazins</a> ist auch ein Artikel von mir enthalten, und wie sollte es wohl anders sein *Trommelwirbel*, beschäftigt der sich mit dem Thema <a href="http://www.manuel-pichler.de/exit.php?url_id=2362&amp;entry_id=88" title="http://de.wikipedia.org/wiki/Softwaremetrik"  onmouseover="window.status='http://de.wikipedia.org/wiki/Softwaremetrik';return true;" onmouseout="window.status='';return true;">Softwaremetriken</a> <img src="http://www.manuel-pichler.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> 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.
</p>

<p>
Ü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 <a href="http://www.manuel-pichler.de/exit.php?url_id=2363&amp;entry_id=88" title="http://phpconference.com"  onmouseover="window.status='http://phpconference.com';return true;" onmouseout="window.status='';return true;">PHP Conference 2010</a>, die vom 30. Mai bis 2. Juni in Berlin stattfindet, an der ich teilnehmen und zwei Vorträge halten werden.
</p>

<ul>
  <li><a href="http://www.manuel-pichler.de/exit.php?url_id=2364&amp;entry_id=88" title="http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13448"  onmouseover="window.status='http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13448';return true;" onmouseout="window.status='';return true;">Von Continuous Integration zu Continuous Deployment</a></li>
  <li><a href="http://www.manuel-pichler.de/exit.php?url_id=2365&amp;entry_id=88" title="http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13450"  onmouseover="window.status='http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13450';return true;" onmouseout="window.status='';return true;">Statische Codeanalyse wirklich effektiv nutzen</a></li>
</ul> 
            </div>
        </content>
        <dc:subject>article</dc:subject>
<dc:subject>ipc</dc:subject>
<dc:subject>php-magazin</dc:subject>
<dc:subject>software metrics</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/89-PHP-Magazin-Artikel-zum-Thema-Softwaremetriken.html" rel="alternate" title="PHP-Magazin Artikel zum Thema Softwaremetriken" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-05-12T07:04:12Z</published>
        <updated>2010-05-12T07:04:12Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=89</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/13-phpmd" label="phpmd" term="phpmd" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/10-phpundercontrol" label="phpundercontrol" term="phpundercontrol" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
            <category scheme="http://www.manuel-pichler.de/categories/12-staticReflection" label="staticReflection" term="staticReflection" />
    
        <id>http://www.manuel-pichler.de/archives/89-guid.html</id>
        <title type="html">PHP-Magazin Artikel zum Thema Softwaremetriken</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  <em>This blog post is in German as the mentioned article was published in German.</em>
</p>

<p>
In der heute erschienenen Ausgabe <a href="http://www.manuel-pichler.de/exit.php?url_id=2366&amp;entry_id=89" title="http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html"  onmouseover="window.status='http://it-republik.de/php/php-magazin-ausgaben/LinkedIn-vs.-Xing-000396.html';return true;" onmouseout="window.status='';return true;">4.10</a> des <a href="http://www.manuel-pichler.de/exit.php?url_id=2367&amp;entry_id=89" title="http://it-republik.de/php/php-magazin/"  onmouseover="window.status='http://it-republik.de/php/php-magazin/';return true;" onmouseout="window.status='';return true;">PHP Magazins</a> ist auch ein Artikel von mir enthalten, und wie sollte es wohl anders sein *Trommelwirbel*, beschäftigt der sich mit dem Thema <a href="http://www.manuel-pichler.de/exit.php?url_id=2368&amp;entry_id=89" title="http://de.wikipedia.org/wiki/Softwaremetrik"  onmouseover="window.status='http://de.wikipedia.org/wiki/Softwaremetrik';return true;" onmouseout="window.status='';return true;">Softwaremetriken</a> <img src="http://www.manuel-pichler.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> 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.
</p>

<p>
Ü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 <a href="http://www.manuel-pichler.de/exit.php?url_id=2369&amp;entry_id=89" title="http://phpconference.com"  onmouseover="window.status='http://phpconference.com';return true;" onmouseout="window.status='';return true;">PHP Conference 2010</a>, die vom 30. Mai bis 2. Juni in Berlin stattfindet, an der ich teilnehmen und zwei Vorträge halten werden.
</p>

<ul>
  <li><a href="http://www.manuel-pichler.de/exit.php?url_id=2370&amp;entry_id=89" title="http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13448"  onmouseover="window.status='http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13448';return true;" onmouseout="window.status='';return true;">Von Continuous Integration zu Continuous Deployment</a></li>
  <li><a href="http://www.manuel-pichler.de/exit.php?url_id=2371&amp;entry_id=89" title="http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13450"  onmouseover="window.status='http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc2010se&amp;amp;id=13450';return true;" onmouseout="window.status='';return true;">Statische Codeanalyse wirklich effektiv nutzen</a></li>
</ul> 
            </div>
        </content>
        <dc:subject>article</dc:subject>
<dc:subject>ipc</dc:subject>
<dc:subject>php-magazin</dc:subject>
<dc:subject>software metrics</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/87-PHP_Depend-0.9.13-bugfix-release.html" rel="alternate" title="PHP_Depend 0.9.13 bugfix release" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-05-10T15:31:00Z</published>
        <updated>2010-05-10T15:45:46Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=87</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/87-guid.html</id>
        <title type="html">PHP_Depend 0.9.13 bugfix release</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>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's test code, where a
missing <code>require_once</code> statement has caused a <code>E_FATAL</code> while running
the test suite in <a href="http://www.manuel-pichler.de/exit.php?url_id=2359&amp;entry_id=87" title="http://phpunit.de"  onmouseover="window.status='http://phpunit.de';return true;" onmouseout="window.status='';return true;">PHPUnit's</a> process isolation mode.</p>
<ul>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2354&amp;entry_id=87" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/145"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/145';return true;" onmouseout="window.status='';return true;">#145</a>: Incorrect require_once statement in ASTSwitchStatement
source file. Fixed in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2355&amp;entry_id=87" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1262"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1262';return true;" onmouseout="window.status='';return true;">#1262</a>.</li>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2356&amp;entry_id=87" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/150"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/150';return true;" onmouseout="window.status='';return true;">#150</a>: Invalid nowdoc substitution has produced broken code.
Fixed in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2357&amp;entry_id=87" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1266"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1266';return true;" onmouseout="window.status='';return true;">#1266</a>.</li>
</ul>
<br />
<p>As always, you can get the latest PHP_Depend version from its PEAR channel:
<a href="http://www.manuel-pichler.de/exit.php?url_id=2358&amp;entry_id=87" title="http://pear.pdepend.org"  onmouseover="window.status='http://pear.pdepend.org';return true;" onmouseout="window.status='';return true;">pear.pdepend.org</a>:</p>
<pre>
mapi&#64;arwen ~ $ pear channel-discover pear.pdepend.org
mapi&#64;arwen ~ $ pear install pdepend/PHP_Depend-beta
</pre>
<p>Or you can fetch the sources from the subversion reposition:</p>
<pre>
mapi&#64;arwen ~ $ svn co http://svn.pdepend.org/trunk pdepend
</pre>
<p>And additionally you can find a repository mirror on github:</p>
<pre>
mapi&#64;arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
</pre> 
            </div>
        </content>
        <dc:subject>bug fix</dc:subject>
<dc:subject>php_depend</dc:subject>
<dc:subject>release announcement</dc:subject>
<dc:subject>software metrics</dc:subject>
<dc:subject>tokenizer</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/86-Goodbye-Cologne.html" rel="alternate" title="Goodbye Cologne" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-04-29T11:20:00Z</published>
        <updated>2010-05-10T15:44:55Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=86</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/13-phpmd" label="phpmd" term="phpmd" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/10-phpundercontrol" label="phpundercontrol" term="phpundercontrol" />
            <category scheme="http://www.manuel-pichler.de/categories/8-planet-php" label="planet-php" term="planet-php" />
    
        <id>http://www.manuel-pichler.de/archives/86-guid.html</id>
        <title type="html">Goodbye Cologne</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>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 <a href="http://www.manuel-pichler.de/exit.php?url_id=2346&amp;entry_id=86" title="http://kore-nordmann.de/blog/0095_ez_components_new_ways.txt"  onmouseover="window.status='http://kore-nordmann.de/blog/0095_ez_components_new_ways.txt';return true;" onmouseout="window.status='';return true;">Kore</a> and <a href="http://www.manuel-pichler.de/exit.php?url_id=2347&amp;entry_id=86" title="http://schlitt.info/opensource/blog/0725_goodbye_ez_systems_hello_world.html"  onmouseover="window.status='http://schlitt.info/opensource/blog/0725_goodbye_ez_systems_hello_world.html';return true;" onmouseout="window.status='';return true;">Toby</a> 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.</p>

<p>Under the hood of our company we will also offer support, trainings and
consulting for several quality assurance tools, like <a href="http://www.manuel-pichler.de/exit.php?url_id=2348&amp;entry_id=86" title="http://pdepend.org"  onmouseover="window.status='http://pdepend.org';return true;" onmouseout="window.status='';return true;">pdepend</a>, <a href="http://www.manuel-pichler.de/exit.php?url_id=2349&amp;entry_id=86" title="http://phpmd.org"  onmouseover="window.status='http://phpmd.org';return true;" onmouseout="window.status='';return true;">phpmd</a> and
<a href="http://www.manuel-pichler.de/exit.php?url_id=2350&amp;entry_id=86" title="http://phpundercontrol.org"  onmouseover="window.status='http://phpundercontrol.org';return true;" onmouseout="window.status='';return true;">phpUnderControl</a>. 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't hesitate to contact us.</p>

<p>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 <a href="http://www.manuel-pichler.de/exit.php?url_id=2351&amp;entry_id=86" title="http://schlitt.info/opensource/"  onmouseover="window.status='http://schlitt.info/opensource/';return true;" onmouseout="window.status='';return true;">Toby</a> and
<a href="http://www.manuel-pichler.de/exit.php?url_id=2352&amp;entry_id=86" title="http://kore-nordmann.de"  onmouseover="window.status='http://kore-nordmann.de';return true;" onmouseout="window.status='';return true;">Kore</a>.</p>

<p>To finalize the little marketing for the company and its services <img src="http://www.manuel-pichler.de/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> 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.</p>
 
            </div>
        </content>
        <dc:subject>changes</dc:subject>
<dc:subject>company</dc:subject>
<dc:subject>consulting</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>phpmd</dc:subject>
<dc:subject>phpundercontrol</dc:subject>
<dc:subject>php_depend</dc:subject>
<dc:subject>quality</dc:subject>
<dc:subject>support</dc:subject>
<dc:subject>training</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/85-PHP_Depend-0.9.12-release.html" rel="alternate" title="PHP_Depend 0.9.12 release" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-04-25T12:44:15Z</published>
        <updated>2010-04-25T12:53:26Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=85</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/11-php_depend" label="php_depend" term="php_depend" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/85-guid.html</id>
        <title type="html">PHP_Depend 0.9.12 release</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>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.</p>
<p>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'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.</p>
<ul>
<li>Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2331&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/97"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/97';return true;" onmouseout="window.status='';return true;">#97</a>: Replace current token approach in CCN- and NPath-Analyzer
with AST-Nodes. Implemented in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2332&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1248"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1248';return true;" onmouseout="window.status='';return true;">#1248</a>.</li>
<li>Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2333&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/125"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/125';return true;" onmouseout="window.status='';return true;">#125</a>: PHP_Depend silently parses list statements. Fixed in
svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2334&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1223"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1223';return true;" onmouseout="window.status='';return true;">#1223</a>. Thanks to Joey Mazzarelli for providing this patch.</li>
<li>Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2335&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/126"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/126';return true;" onmouseout="window.status='';return true;">#126</a>: Generate reproducable node identifiers instead of
random numbers. Implemented in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2336&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1244"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1244';return true;" onmouseout="window.status='';return true;">#1244</a>.</li>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2337&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/128"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/128';return true;" onmouseout="window.status='';return true;">#128</a>: Variable variables in foreach statement cause an exception.
Fixed in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2338&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1237"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1237';return true;" onmouseout="window.status='';return true;">#1237</a>.</li>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2339&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/133"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/133';return true;" onmouseout="window.status='';return true;">#133</a>: Fatal error: Maximum function nesting level of '100' reached,
aborting! in /usr/share/pear/PHP/Depend/Util/Log.php on line 109. Fixed
in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2340&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1257"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1257';return true;" onmouseout="window.status='';return true;">#1257</a>.</li>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2341&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/134"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/134';return true;" onmouseout="window.status='';return true;">#134</a>: ASTReturnStatement is not derived from ASTStatement. Fixed
in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2342&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1250"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1250';return true;" onmouseout="window.status='';return true;">#1250</a>.</li>
<li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2343&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/issue_tracker/issue/135"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/issue_tracker/issue/135';return true;" onmouseout="window.status='';return true;">#135</a>: Several Statement classes do not inherit ASTStatement. Fixed
in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2344&amp;entry_id=85" title="http://tracker.pdepend.org/pdepend/browse_code/revision/1255"  onmouseover="window.status='http://tracker.pdepend.org/pdepend/browse_code/revision/1255';return true;" onmouseout="window.status='';return true;">#1255</a>.</li>
</ul>
<br />
<p>As always, you can get the latest PHP_Depend version from its PEAR channel:
<a href="http://www.manuel-pichler.de/exit.php?url_id=2345&amp;entry_id=85" title="http://pear.pdepend.org"  onmouseover="window.status='http://pear.pdepend.org';return true;" onmouseout="window.status='';return true;">pear.pdepend.org</a>:</p>
<pre>
mapi&#64;arwen ~ $ pear channel-discover pear.pdepend.org
mapi&#64;arwen ~ $ pear install pdepend/PHP_Depend-beta
</pre>
<p>Or you can fetch the sources from the subversion reposition:</p>
<pre>
mapi&#64;arwen ~ $ svn co http://svn.pdepend.org/trunk pdepend
</pre>
<p>And additionally you can find a repository mirror on github:</p>
<pre>
mapi&#64;arwen ~ $ git clone git://github.com/manuelpichler/pdepend.git
</pre> 
            </div>
        </content>
        <dc:subject>bug fix</dc:subject>
<dc:subject>npath complexity</dc:subject>
<dc:subject>php_depend</dc:subject>
<dc:subject>release announcement</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/84-Howto-create-custom-rule-sets-for-PHPMD.html" rel="alternate" title="Howto create custom rule sets for PHPMD" />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-04-08T12:25:00Z</published>
        <updated>2010-04-08T13:07:01Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/13-phpmd" label="phpmd" term="phpmd" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/8-planet-php" label="planet-php" term="planet-php" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/84-guid.html</id>
        <title type="html">Howto create custom rule sets for PHPMD</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  In this blog post I will describe a useful feature in <a href="http://www.manuel-pichler.de/exit.php?url_id=2316&amp;entry_id=84" title="http://phpmd.org"  onmouseover="window.status='http://phpmd.org';return true;" onmouseout="window.status='';return true;">PHPMD</a> that will simplify your life when it comes to create custom rule sets for PHPMD. PHPMD can be seen as an <em>one level down/low level</em> equivalent to <a href="http://www.manuel-pichler.de/exit.php?url_id=2317&amp;entry_id=84" title="http://pear.php.net/package/PHP_CodeSniffer"  onmouseover="window.status='http://pear.php.net/package/PHP_CodeSniffer';return true;" onmouseout="window.status='';return true;">PHP_CodeSniffer</a>. It is a simple command line tool that can be used to check your application's source code for possible bugs, suboptimal or overcomplicated code. The current release of <a href="http://www.manuel-pichler.de/exit.php?url_id=2318&amp;entry_id=84" title="http://phpmd.org/download/releases/index.html"  onmouseover="window.status='http://phpmd.org/download/releases/index.html';return true;" onmouseout="window.status='';return true;">PHPMD</a> ships with three default rule sets. The first set of rules tests the <a href="http://www.manuel-pichler.de/exit.php?url_id=2319&amp;entry_id=84"  onmouseover="window.status='http://phpmd.org/rules/codesize.html';return true;" onmouseout="window.status='';return true;" title="Code Size Rules">codesize</a> of class, methods and functions. The second rule set contains rules that check your code for <a href="http://www.manuel-pichler.de/exit.php?url_id=2320&amp;entry_id=84"  onmouseover="window.status='http://phpmd.org/rules/unusedcode.html';return true;" onmouseout="window.status='';return true;" title="Unused Code Rules">unused</a> variables, methods etc. and finally there is a rule set that tests the code against some <a href="http://www.manuel-pichler.de/exit.php?url_id=2321&amp;entry_id=84"  onmouseover="window.status='http://phpmd.org/rules/naming.html';return true;" onmouseout="window.status='';return true;" title="Naming Rules ">naming</a> conventions.
</p>

<p>
  Normally when you start using a quality assurance tool, you will not want to use it'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's rule set syntax and howto to create your own rule set, by reusing parts of the existing default configuration.
</p>

<p>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.</p>

<h5>Starting with an empty ruleset.xml file</h5>
<p>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 <code>&#64;name</code> attribute
and <code>&lt;description /&gt;</code> element to something that describes the purpose
of this set.</p>
<pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;ruleset name=&quot;My first PHPMD rule set&quot;
         xmlns=&quot;http://pmd.sf.net/ruleset/1.0.0&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;
         xsi:noNamespaceSchemaLocation=&quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;&gt;
    &lt;description&gt;
        My custom rule set that checks my code...
    &lt;/description&gt;
&lt;/ruleset&gt;
</pre>

<h5>Adding rule references to the new ruleset.xml file</h5>
<p>The first thing we would like to do is to add all <a href="http://www.manuel-pichler.de//phpmd.org/rules/unusedcode.html">unused code</a> rules
to the new rule set file. This can simply be done with a <code>&lt;rule /&gt;</code>
element that references the entire <a href="http://www.manuel-pichler.de//phpmd.org/rules/unusedcode.html">unused code</a> rule set that comes
with PHPMD.</p>
<pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;ruleset name=&quot;My first PHPMD rule set&quot;
         xmlns=&quot;http://pmd.sf.net/ruleset/1.0.0&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;
         xsi:noNamespaceSchemaLocation=&quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;&gt;
    &lt;description&gt;
        My custom rule set that checks my code...
    &lt;/description&gt;

    &lt;!-- Import the entire unused code rule set --&gt;
    &lt;rule ref=&quot;rulesets/unusedcode.xml&quot; /&gt;
&lt;/ruleset&gt;
</pre>
<p>That's it. Now the custom rule set applies all <a href="http://www.manuel-pichler.de//phpmd.org/rules/unusedcode.html">unused code</a> rules
against the analyzed source code.</p>
<p>We would also like to use the <a href="http://www.manuel-pichler.de//phpmd.org/rules/codesize.html#cyclomaticcomplexity">cyclomatic complexity</a> rule from the
existing <a href="http://www.manuel-pichler.de//phpmd.org/rules/codesize.html">codesize</a> set in our custom rule set. To achieve this we can
reuse the same syntax with a <code>&lt;rule /&gt;</code> element and a <code>&#64;ref</code> attribute.</p>
<pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;ruleset name=&quot;My first PHPMD rule set&quot;
         xmlns=&quot;http://pmd.sf.net/ruleset/1.0.0&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;
         xsi:noNamespaceSchemaLocation=&quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;&gt;
    &lt;description&gt;
        My custom rule set that checks my code...
    &lt;/description&gt;

    &lt;!-- Import the entire unused code rule set --&gt;
    &lt;rule ref=&quot;rulesets/unusedcode.xml&quot; /&gt;

    &lt;!-- Import the entire cyclomatic complexity rule --&gt;
    &lt;rule ref=&quot;rulesets/codesize.xml/CyclomaticComplexity&quot; /&gt;
&lt;/ruleset&gt;
</pre>
<p>Now that the new rule set uses the <a href="http://www.manuel-pichler.de//phpmd.org/rules/codesize.html#cyclomaticcomplexity">cyclomatic complexity</a> rule we would
also like to customize some of the rule's properties. First we will
increase the rule's priority to the highest possible priority value <code>1</code>
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.</p>
<pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;ruleset name=&quot;My first PHPMD rule set&quot;
         xmlns=&quot;http://pmd.sf.net/ruleset/1.0.0&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;
         xsi:noNamespaceSchemaLocation=&quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;&gt;
    &lt;description&gt;
        My custom rule set that checks my code...
    &lt;/description&gt;

    &lt;!-- Import the entire unused code rule set --&gt;
    &lt;rule ref=&quot;rulesets/unusedcode.xml&quot; /&gt;

    &lt;!--
        Import the entire cyclomatic complexity rule and
        customize the rule configuration.
    --&gt;
    &lt;rule ref=&quot;rulesets/codesize.xml/CyclomaticComplexity&quot;&gt;
        &lt;priority&gt;1&lt;/priority&gt;
        &lt;properties&gt;
            &lt;property name=&quot;reportLevel&quot; value=&quot;5&quot; /&gt;
        &lt;/properties&gt;
    &lt;/rule&gt;
&lt;/ruleset&gt;
</pre>
<p>You should know that PHPMD handles all custom settings additive. This
means that PHPMD keeps the original configuration for every setting that
isn't customized in a rule reference.</p>

<h5>Excluding rules from a rule set</h5>
<p>Finally we would like to reuse the <a href="http://www.manuel-pichler.de//phpmd.org/rules/naming.html">naming</a> rule set of PHPMD. But we
don'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
<code>&lt;exclude /&gt;</code> element within the rule reference. This element has an
attribute <code>&#64;name</code> which specifies the name of the excluded rule.</p>
<pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;ruleset name=&quot;My first PHPMD rule set&quot;
         xmlns=&quot;http://pmd.sf.net/ruleset/1.0.0&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://pmd.sf.net/ruleset/1.0.0
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;
         xsi:noNamespaceSchemaLocation=&quot;
                     http://pmd.sf.net/ruleset_xml_schema.xsd&quot;&gt;
    &lt;description&gt;
        My custom rule set that checks my code...
    &lt;/description&gt;

    &lt;!-- Import the entire unused code rule set --&gt;
    &lt;rule ref=&quot;rulesets/unusedcode.xml&quot; /&gt;

    &lt;!--
        Import the entire cyclomatic complexity rule and
        customize the rule configuration.
    --&gt;
    &lt;rule ref=&quot;rulesets/codesize.xml/CyclomaticComplexity&quot;&gt;
        &lt;priority&gt;1&lt;/priority&gt;
        &lt;properties&gt;
            &lt;property name=&quot;reportLevel&quot; value=&quot;5&quot; /&gt;
        &lt;/properties&gt;
    &lt;/rule&gt;

    &lt;!-- Import entire naming rule set and exclude rules --&gt;
    &lt;rule ref=&quot;rulesets/naming.xml&quot;&gt;
        &lt;exclude name=&quot;ShortVariable&quot; /&gt;
        &lt;exclude name=&quot;LongVariable&quot; /&gt;
    &lt;/rule&gt;
&lt;/ruleset&gt;
</pre>

<h5>Conclusion</h5>
<p>With PHPMD'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's rule <a href="http://www.manuel-pichler.de//phpmd.org/rules/">documentation</a>
if it happens that you don't know what rules exist or you don'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
<a href="http://www.manuel-pichler.de/exit.php?url_id=2327&amp;entry_id=84" title="http://tracker.phpmd.org/php_mess_detector/browse_code/view/rulesets/"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/browse_code/view/rulesets/';return true;" onmouseout="window.status='';return true;">files</a> that are shipped with PHPMD.</p>

<p>
  You can get the latest PHPMD version from its PEAR channel: <a href="http://www.manuel-pichler.de/exit.php?url_id=2328&amp;entry_id=84" title="http://pear.phpmd.org"  onmouseover="window.status='http://pear.phpmd.org';return true;" onmouseout="window.status='';return true;">pear.phpmd.org</a> 
</p>

<pre>
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
</pre>

<p>
  Or from our <a href="http://www.manuel-pichler.de/exit.php?url_id=2329&amp;entry_id=84" title="http://github.com/manuelpichler/phpmd"  onmouseover="window.status='http://github.com/manuelpichler/phpmd';return true;" onmouseout="window.status='';return true;">github repository</a>:
</p>

<pre>
mapi@arwen ~ $ git clone git://github.com/manuelpichler/phpmd.git
</pre>

<p>
  I would be glad if you file a ticket in PHPMD's <a href="http://www.manuel-pichler.de/exit.php?url_id=2330&amp;entry_id=84" title="http://tracker.phpmd.org/php_mess_detector/"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/';return true;" onmouseout="window.status='';return true;">issue tracker</a>
  for all issues and/or enhancements you encounter while testing PHPMD.
</p> 
            </div>
        </content>
        <dc:subject>annotations</dc:subject>
<dc:subject>customization</dc:subject>
<dc:subject>phpmd</dc:subject>
<dc:subject>quality assurance</dc:subject>
<dc:subject>rule set</dc:subject>
<dc:subject>static code analysis</dc:subject>

    </entry>
    <entry>
        <link href="http://www.manuel-pichler.de/archives/83-PHPMD-0.2.3-released-with-SuppressWarnings-support-and-new-rule-set..html" rel="alternate" title="PHPMD 0.2.3 released with @SuppressWarnings support and new rule set." />
        <author>
            <name>Manuel Pichler</name>
                    </author>
    
        <published>2010-03-04T09:32:00Z</published>
        <updated>2010-03-04T11:00:21Z</updated>
        <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=atom1.0&amp;type=comments&amp;cid=83</wfw:commentRss>
    
            <category scheme="http://www.manuel-pichler.de/categories/3-php" label="php" term="php" />
            <category scheme="http://www.manuel-pichler.de/categories/13-phpmd" label="phpmd" term="phpmd" />
            <category scheme="http://www.manuel-pichler.de/categories/2-phpugdo" label="phpugdo" term="phpugdo" />
            <category scheme="http://www.manuel-pichler.de/categories/9-projects" label="projects" term="projects" />
    
        <id>http://www.manuel-pichler.de/archives/83-guid.html</id>
        <title type="html">PHPMD 0.2.3 released with @SuppressWarnings support and new rule set.</title>
        <content type="xhtml" xml:base="http://www.manuel-pichler.de/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
  We are proud to announce the 0.2.3 release of the <a href="http://www.manuel-pichler.de/exit.php?url_id=2299&amp;entry_id=83" title="http://phpmd.org"  onmouseover="window.status='http://phpmd.org';return true;" onmouseout="window.status='';return true;">PHP Mess Detector</a>, 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 <a href="http://www.manuel-pichler.de/exit.php?url_id=2300&amp;entry_id=83" title="http://phpmd.org/documentation/suppress-warnings.html"  onmouseover="window.status='http://phpmd.org/documentation/suppress-warnings.html';return true;" onmouseout="window.status='';return true;">@SuppressWarnings</a> annotation, that allows you to exclude single methods or complete classes from PHPMD's analyzing process. This annotation can be used to suppress a single rule, a group of rules or PHPMD at all.
</p>

<pre>
/**
 * 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)
    {
    }
}
</pre>

<p>
  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.
</p>

<ul>
  <li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2301&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/6"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/6';return true;" onmouseout="window.status='';return true;">#6</a>: PHP Tokenizer required but no error when installing.</li>
  <li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2302&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/7"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/7';return true;" onmouseout="window.status='';return true;">#7</a>: UnusedLocalVariable ruleset incorrectly flags variables as unused when used inside double quoted string. Fixed in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2303&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/browse_code/revision/187"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/browse_code/revision/187';return true;" onmouseout="window.status='';return true;">#187</a>.</li>
  <li>Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2304&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/9"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/9';return true;" onmouseout="window.status='';return true;">#9</a>: Add support for "Suppress warnings" annotations. Implemented in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2305&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/browse_code/revision/200"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/browse_code/revision/200';return true;" onmouseout="window.status='';return true;">#200</a>.</li>
  <li>Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2306&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/10"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/10';return true;" onmouseout="window.status='';return true;">#10</a>: Support for exclude element in rule-set files added.   Implemented in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2307&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/browse_code/revision/189"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/browse_code/revision/189';return true;" onmouseout="window.status='';return true;">#189</a>.</li>
  <li>Implemented <a href="http://www.manuel-pichler.de/exit.php?url_id=2308&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/13"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/13';return true;" onmouseout="window.status='';return true;">#13</a>: Implement naming rules, e.g. short variables, parameter etc.</li>
  <li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2309&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/14"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/14';return true;" onmouseout="window.status='';return true;">#14</a>: ExcessivePublicCount rule should utilize PHP_Depend's cis metric. Fixed in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2310&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/browse_code/revision/203"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/browse_code/revision/203';return true;" onmouseout="window.status='';return true;">#203</a>.</li>
  <li>Fixed <a href="http://www.manuel-pichler.de/exit.php?url_id=2311&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/15"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/issue_tracker/issue/15';return true;" onmouseout="window.status='';return true;">#15</a>: ExcessivePublicCount rule is never used. Fixed in svn revision <a href="http://www.manuel-pichler.de/exit.php?url_id=2312&amp;entry_id=83" title="http://tracker.phpmd.org/php_mess_detector/browse_code/revision/202"  onmouseover="window.status='http://tracker.phpmd.org/php_mess_detector/browse_code/revision/202';return true;" onmouseout="window.status='';return true;">#202</a>.</li>
</ul>
<br />

<p>
  You can get the latest PHPMD version from its PEAR channel: <a href="http://www.manuel-pichler.de/exit.php?url_id=2313&amp;entry_id=83" title="http://pear.phpmd.org"  onmouseover="window.status='http://pear.phpmd.org';return true;" onmouseout="window.status='';return true;">pear.phpmd.org</a> 
</p>

<pre>
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
</pre>

<p>
  Or from our <a href="http://www.manuel-pichler.de/exit.php?url_id=2314&amp;entry_id=83" title="http://github.com/manuelpichler/phpmd"  onmouseover="window.status='http://github.com/manuelpichler/phpmd';return true;" onmouseout="window.status='';return true;">github</a> <a href="http://www.manuel-pichler.de/exit.php?url_id=2314&amp;entry_id=83" title="http://github.com/manuelpichler/phpmd"  onmouseover="window.status='http://github.com/manuelpichler/phpmd';return true;" onmouseout="window.status='';return true;">repository</a>:
</p>

<pre>
mapi@arwen ~ $ git clone git://github.com/manuelpichler/phpmd.git
</pre> 
            </div>
        </content>
        <dc:subject>annotations</dc:subject>
<dc:subject>phpmd</dc:subject>
<dc:subject>quality assurance</dc:subject>
<dc:subject>release announcement</dc:subject>
<dc:subject>static code analysis</dc:subject>

    </entry>

</feed>
