This documentation is not maintained. Please refer to doc.castsoftware.com/technologies to find the latest updates.
Although this extension is officially supported by CAST, please note that it has been developed within the technical constraints of the CAST Universal Analyzer technology and to some extent adapted to meet specific customer needs. Therefore the extension may not address all of the coding techniques and patterns that exist for the target technology and may not produce the same level of analysis and precision regarding e.g. quality measurement and/or function point counts that are typically produced by other CAST AIP analyzers.

What's new?

PHP 1.0

PHP 1.0.1

PHP 1.0.2

  • Bug fixing - see PHP 1.0 - Bug Fix List
  • Improvements have been made to the PHP Code Sniffer that CAST uses as part of this extension. CAST therefore recommends that you install the new version "php_sniffer_install.zip" provided inside the package as described in PHP 1.0 - Analysis Configuration. Note that if you already havea previous version of the PHP Code Sniffer installed, CAST recommends that you remove the physical folder where the previous PHP Code Sniffer has been installed before starting the installation of the new PHP Code Sniffer.

  • Updated the list of Quality Rules calculated by the PHP Code Sniffer - see section below.
  • Updated the documentation of PHP Quality Rules and Metrics - see section below.

PHP 1.0.3

  • Bug fixing - see PHP 1.0 - Bug Fix List
  • This version of the PHP Language Pack is supported on CAST databases installed on Microsoft SQL Server. For supported versions of Microsoft SQL Server, please see the CAST AIP compatibility and Supported DBMS servers section below.

Please note due to a bug in CAST AIP, upgrading from CAST AIP 7.0.x with a legacy PHP extension to CAST AIP 7.3.x (where x < 5) with PHP 1.0.3 is not supported on Microsoft SQL Server.

PHP 1.0.4

Function Point, Quality and Sizing support

This extension provides the following support:

  • Function Points (transactions): a green tick indicates that OMG Function Point counting and Transaction Risk Index are supported
  • Quality and Sizing: a green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist
Function Points
(transactions)
Quality and Sizing
(tick)(tick)

CAST AIP compatibility and Supported DBMS servers

CAST recommends that you always install the latest release of an extension.

CAST AIP compatibility

CAST recommends that you always install the latest release of an extension.


Extension Version

AIP 7.3.xAIP 8.0.xAIP 8.1.xAIP 8.2.xSupported DBMS servers
1.0.4(tick)(tick)(error)(error)This version of the extension is supported with all RDBMS/CAST Storage Services supported for CAST AIP. 
1.0.3(tick)(tick)(error)(error)
1.0.1 and 1.0.2(tick)(error)(error)(error)This version of the extension is not supported on CAST databases installed on any release of Microsoft SQL Server.
1.0

7.3.0 - 7.3.2

(error)(error)(error)

Supported Versions of PHP

This version of the PHP extension provides partial support for the following PHP versions:

  • 5.x

Licence Agreements

In order to provide a better solution and therefore increase the number of quality rules, the PHP configuration uses other external tools, such as:

PHP Code Sniffer

More information about this tool is available here: http://pear.php.net/package/PHP_CodeSniffer

Version

CAST ships version 1.5.2 of the PHP Code Sniffer.

License

The licence agreement for the PHP Code Sniffer tool is available here:

and is detailed below:

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Quality Rules calculated by the PHP Code Sniffer tool

1007022Avoid FOR loops which can be simplified to a WHILE loop (PHP)
1007024Avoid incrementer jumbling in loops (PHP)
1007026Avoid using identical type operators rather than EQUAL operators (PHP)
1007028Avoid using increment/decrement operator (PHP)
1007030Avoid using empty statement (PHP)
1007032Avoid empty class definition (PHP)
1007034Avoid empty style definition (PHP)
1007036Avoid classes having too many children (PHP)
1007038Avoid classes having too many dependencies (PHP)
1007040Avoid classes having too many parents (PHP)
1007046Avoid Classes and Interfaces with a High Depth of Inheritance Tree (PHP)
1007056Avoid unnecessary final modifiers inside final Classes (PHP)
1007058Avoid unused Function parameters (PHP)
1007080Avoid Classes not having the same name as the file  (PHP)
1007084Avoid uppercase keywords for control structures in Sections(PHP)
1007086Avoid uppercase keywords for control structures in Functions and Methods(PHP)
1007088Avoid having variable with a too short name (PHP)
1007090Avoid having variable with a too long  name (PHP)
1007096Avoid ELSEIF statements. ELSE and IF should be separate (PHP)
1007116Avoid Methods with Object Instantiation in loops (PHP)
1007124Avoid empty catch blocks (PHP)
1007126Avoid Functions throwing exceptions and not having a @Throws tag (PHP)
1007128Avoid classes exceeding maximum length (PHP)
1007130Avoid methods having too many  parameters (PHP)
1007132Avoid methods having lenght exceeding the maximum (PHP)
1007134Avoid  classes with too many fields (PHP)
1007136Avoid classes with too many methods (PHP)
1007138Avoid classes having a  number of public methods and attributs exceeds maximum (PHP)
1007140Avoid having unused variables (PHP)
1007142Avoid unused private fields (PHP)
1007144Avoid unused private  methods (PHP)
1007146Avoid classes exceeding number of weighted methods (PHP)
1007148Avoid unconditional IF and ELSEIF statements (PHP)
1007150Avoid useless overriding Methods (PHP)
1007152Avoid unassigned default values in Functions (PHP)
1007156Avoid using a goto statements (PHP)
1007158Avoid using eval expressions (PHP)
1007160Avoid using exit expressions (PHP)

PHPMD

More information about this tool is available here: http://phpmd.org/

The licence agreement for the PHPMD tool is available available in the file "LICENSE.txt" delivered in the source folder of the tool and is detailed below:

Copyright (c) 2009-2011, Manuel Pichler <mapi@phpmd.org>.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of Manuel Pichler nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

PHP Depend

More information about this tool is available here: http://pdepend.org/

The licence agreement for the PHP Depend tool is available in the file "LICENSE.txt" delivered in the source folder of the tool and is detailed below:

Copyright (c) 2008-2012, Manuel Pichler <mapi@pdepend.org>.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of Manuel Pichler nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Documentation of PHP Quality Rules and Metrics

Documentation of all CAST Metrics and Quality Rules specific to the PHP extension is delivered via a compiled HTML Help file (CHM). Please ensure that once the CHM has been downloaded you right-click on the CHM file in Windows Explorer and choose Properties > Unblock. This will ensure that the CHM is readable on your own PC:

VersionCHM
1.0.3 and 1.0.4metrics_PHP_1-0-3.chm
1.0.2metrics_PHP_1-0-2.chm
1.0 and 1.0.1metrics_PHP_1-0.chm