Home  >  Article  >  Backend Development  >  Essential PHP development tools Introduction to PHP continuous integration tools (Part 1)_PHP tutorial

Essential PHP development tools Introduction to PHP continuous integration tools (Part 1)_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 10:56:541126browse

In this article, we will introduce the continuous integration concept that is often used in current software engineering, and also introduce how to make good use of PHP in PHP development There are currently some open source continuous integration management tools to manage projects well.

The concept of continuous integration

The concept of continuous integration was proposed in modern software engineering. It was first seen in agile development methodologies. Master Martin Fowler said this about continuous integration Definition: Continuous integration is a software development practice in which team development members integrate their work frequently, usually each member integrates at least once a day, which means that integration may occur multiple times a day. Each integration is verified through automated builds (including compilation, release, and automated testing) to detect integration errors as quickly as possible. Many teams find that this process can greatly reduce integration issues, allowing the team to develop cohesive software faster.

The following introduces the continuous integration tools in PHP:

PHPUNIT

First of all, PHPUNIT is a unit testing tool in PHP , the project address is: http://www.phpunit.it. It

can automatically run the unit test code you wrote and give a pass or fail result. The installation steps are as follows. You can use PEAR in PHP to install:

<ol class="dp-c">
<li class="alt"><span><span>sudo apt-get install php5-curl php-pear php5-dev  </span></span></li>
<li><span>sudo pear upgrade pear  </span></li>
<li class="alt"><span>sudo pear channel-discover pear.phpunit.de  </span></li>
<li><span>sudo pear channel-discover components.ez.no  </span></li>
<li class="alt"><span>sudo pear channel-discover pear.symfony-project.com  </span></li>
<li><span>sudo pear install phpunit/PHPUnit </span></li>
</ol>

. After that, you can execute phpunit on the command line in the following format:

Phpunit unit test php file name. php

In addition, you can also execute the following command to generate a unit test coverage report:

phpunit --coverage-html ../CodeCoverage

This will be in the specified directory Generate a unit test coverage report in the directory CodeCoverage. For example, in this example, the unit test coverage report will be generated in the directory CodeCoverage, as shown below:

Introduction to PHP continuous integration tools necessary for PHP development (Part 1)
▲Click to see the larger image

If you click on each PHP file in the picture above, you can also see each one in detail The unit test coverage of the file is as shown below:

Introduction to PHP continuous integration tools necessary for PHP development (Part 1)
▲Click to see the larger picture

From the picture above, you can see the unit test coverage of the method called in each PHP file, and you can also see which lines of code have been unitized The tests have been covered and which ones have not been covered (green means it has been covered, orange means it has not been covered), as shown below:

Introduction to PHP continuous integration tools necessary for PHP development (Part 1)
▲Click to see the larger image

PHP CodeSniffer

PHP CodeSniffer is a PHP The code style detector checks the code style in the application based on the preset PHP coding style and rules. It has built-in coding style rules for ZEND and PEAR. Of course, developers can also customize it. The address of the project is: http://pear.php.net/package/PHP_CodeSniffer/redirected. The installation method is as follows:

<ol class="dp-c">
<li class="alt"><span><span>sudo pear install PHP_CodeSniffer  </span></span></li>
<li><span>phpcs --standard=Zend c:phpcode </span></li>
</ol>

After phpcs –standard, it is specified to use Zend’s recommended code style standard for checking. , the last parameter is the directory where the PHP file to be checked is located. After running, a rendering of the check is shown below:

PHP CodeSniffer
▲Click View large image

PHP Depend

PHP Depend (http://pdepend.org/) is a tool for static code analysis in PHP. It can be used to check the size and complexity of the code in your PHP project. The installation method is as follows:

<ol class="dp-c">
<li class="alt"><span><span>sudo pear channel-discover pear.pdepend.org  </span></span></li>
<li><span>sudo pear install pdepend/PHP_Depend-beta </span></li>
</ol>

An example used is as follows:

pdepend --jdepend-xml=../jdepend.xml --jdepend-chart=../dependencies.svg --overview-pyramid=../overview-pyramid.svg

The above will generate an XML file and two SVG graphic files. The XML file describes the interdependent calls (references) of each PHP file in the project and the code lines of each method, function, and class. An example is as follows:

<ol class="dp-c">
<li class="alt"><span><span><?xml version=&rdquo;1.0&rdquo; encoding=&rdquo;UTF-8&rdquo;?>  </span></span></li>
<li><span><metrics noc=&rdquo;3&rdquo; nof=&rdquo;0&rdquo; noi=&rdquo;0&rdquo; nom=&rdquo;6&rdquo;>  </span></li>
<li class="alt"><span><package name=&rdquo;+</span><span class="keyword">global</span><span>&rdquo; noc=&rdquo;17&rdquo; nof=&rdquo;0&rdquo; noi=&rdquo;0&rdquo; nom=&rdquo;237&rdquo;>  </span></li>
<li><span><</span><span class="keyword">class</span><span> name=&rdquo;data_container&rdquo;nom=&rdquo;55&rdquo;>  </span></li>
<li class="alt"><span><file name=&rdquo;/home/</span><span class="keyword">case</span><span>-study/libs/data/container.php&rdquo;/>  </span></li>
<li><span></</span><span class="keyword">class</span><span>>  </span></li>
<li class="alt"><span><</span><span class="keyword">class</span><span> name=&rdquo;data_download&rdquo; nom=&rdquo;10&rdquo;>  </span></li>
<li><span><file name=&rdquo;/home/</span><span class="keyword">case</span><span>-study/libs/data/download.php&rdquo;/>  </span></li>
<li class="alt"><span></</span><span class="keyword">class</span><span>> </span></li>
</ol>

The meaning of noc is class The running script of the code, nof is the number of lines of code for the function, noi is the number of lines of interface code, and nom is the number of lines of method code.

Next let’s take a look at the generated SVG image, which is as follows:

PHP CodeSniffer

This picture reflects the dependency measurement of packages in the project. The basic theory comes from the measurement of module dependency and stability in software introduced in Robert C. Martin's paper (http://www.objectmentor.com/resources/articles/oodmetrc.pdf). Among them, the following concepts are mentioned:

Afferent Couplings (Ca)

The number of other packages that depend on the analyzed package is used to measure the responsibility of the pacakge.

Simply put, how many other packages or modules call the analyzed package or module.

Efferent Couplings (Ce)

The number of other packages that the analyzed package class depends on, used to measure the independence of the package.

That is, how many other packages it calls.

Abstractness (A)

The ratio of the abstract classes and interfaces in the analyzed package to the number of all classes in the package, the value range is 0-1. If the value is 0, it proves that there are no abstract classes in the package, and there are only classes that implement logical methods. If the value is 1, there are only abstract classes or interfaces in the package

Instability ( I)

I=Ce/(Ce+Ca), used to measure the instability of the package, with a value ranging from 0 to 1. I=0 means the most stable, I=1 means the least stable.

Distance (D)

is used to measure the balance between stability and abstraction of the package. It can be seen that the ideal situation is for A+I to be closer to 1, which can achieve the best balance of abstraction and stability.

In addition, introduce the meaning of another picture generated in php depend. The picture is as follows:

PHP CodeSniffer

In this picture, the top ANDC represents the average number of inherited other classes, that is, how many classes in the project inherit other classes; AHH is the number of levels of inherited other classes. CALLS is the total number of times the method is called, and FANOUT is the number of types referenced by the class. CYCLO is cyclomatic complexity (for analysis of cyclomatic complexity, please refer to (http://en.wikipedia.org/wiki/Cyclomatic_complexity)). LOC is the number of lines of code, NOM is the number of methods in the project, and NOC is the project The number of classes, NOP is the number of packages in the project.

Relevant data can be calculated according to the division rules indicated in the figure above. For more information, please refer to the php depend manual (http://pdepend. org/documentation/handbook/reports/overview-pyramid.html) detailed analysis.

http://www.bkjia.com/PHPjc/445818.htmlwww.bkjia.com
true

http: //www.bkjia.com/PHPjc/445818.htmlTechArticleIn this article, we will introduce the concept of continuous integration that is often used in current software engineering, and will introduce how to use it in PHP During development, how to make good use of some of PHP’s current open source continuous integration management tools...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn