Home Backend Development PHP Tutorial 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

Jul 20, 2016 am 10:56 AM
php superior introduce exist Will tool develop Essential of at present software engineering integrated

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>
Copy after login

. 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>
Copy after login

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>
Copy after login

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>
Copy after login

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 of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to optimize the performance of debian readdir How to optimize the performance of debian readdir Apr 13, 2025 am 08:48 AM

In Debian systems, readdir system calls are used to read directory contents. If its performance is not good, try the following optimization strategy: Simplify the number of directory files: Split large directories into multiple small directories as much as possible, reducing the number of items processed per readdir call. Enable directory content caching: build a cache mechanism, update the cache regularly or when directory content changes, and reduce frequent calls to readdir. Memory caches (such as Memcached or Redis) or local caches (such as files or databases) can be considered. Adopt efficient data structure: If you implement directory traversal by yourself, select more efficient data structures (such as hash tables instead of linear search) to store and access directory information

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

How Debian improves Hadoop data processing speed How Debian improves Hadoop data processing speed Apr 13, 2025 am 11:54 AM

This article discusses how to improve Hadoop data processing efficiency on Debian systems. Optimization strategies cover hardware upgrades, operating system parameter adjustments, Hadoop configuration modifications, and the use of efficient algorithms and tools. 1. Hardware resource strengthening ensures that all nodes have consistent hardware configurations, especially paying attention to CPU, memory and network equipment performance. Choosing high-performance hardware components is essential to improve overall processing speed. 2. Operating system tunes file descriptors and network connections: Modify the /etc/security/limits.conf file to increase the upper limit of file descriptors and network connections allowed to be opened at the same time by the system. JVM parameter adjustment: Adjust in hadoop-env.sh file

How to recycle packages that are no longer used How to recycle packages that are no longer used Apr 13, 2025 am 08:51 AM

This article describes how to clean useless software packages and free up disk space in the Debian system. Step 1: Update the package list Make sure your package list is up to date: sudoaptupdate Step 2: View installed packages Use the following command to view all installed packages: dpkg--get-selections|grep-vdeinstall Step 3: Identify redundant packages Use the aptitude tool to find packages that are no longer needed. aptitude will provide suggestions to help you safely delete packages: sudoaptitudesearch '~pimportant' This command lists the tags

How to use Nginx logs to improve website speed How to use Nginx logs to improve website speed Apr 13, 2025 am 09:09 AM

Website performance optimization is inseparable from in-depth analysis of access logs. Nginx log records the detailed information of users visiting the website. Cleverly using this data can effectively improve the speed of the website. This article will introduce several website performance optimization methods based on Nginx logs. 1. User behavior analysis and optimization. By analyzing the Nginx log, we can gain a deep understanding of user behavior and make targeted optimization based on this: High-frequency access IP identification: Find the IP address with the highest access frequency, and optimize the server resource configuration for these IP addresses, such as increasing bandwidth or improving the response speed of specific content. Status code analysis: analyze the frequency of different HTTP status codes (such as 404 errors), find out problems in website navigation or content management, and proceed

How to learn Debian syslog How to learn Debian syslog Apr 13, 2025 am 11:51 AM

This guide will guide you to learn how to use Syslog in Debian systems. Syslog is a key service in Linux systems for logging system and application log messages. It helps administrators monitor and analyze system activity to quickly identify and resolve problems. 1. Basic knowledge of Syslog The core functions of Syslog include: centrally collecting and managing log messages; supporting multiple log output formats and target locations (such as files or networks); providing real-time log viewing and filtering functions. 2. Install and configure Syslog (using Rsyslog) The Debian system uses Rsyslog by default. You can install it with the following command: sudoaptupdatesud

Debian mail server SSL certificate installation method Debian mail server SSL certificate installation method Apr 13, 2025 am 11:39 AM

The steps to install an SSL certificate on the Debian mail server are as follows: 1. Install the OpenSSL toolkit First, make sure that the OpenSSL toolkit is already installed on your system. If not installed, you can use the following command to install: sudoapt-getupdatesudoapt-getinstallopenssl2. Generate private key and certificate request Next, use OpenSSL to generate a 2048-bit RSA private key and a certificate request (CSR): openss

How to prevent Debian Apache log security issues How to prevent Debian Apache log security issues Apr 13, 2025 am 09:24 AM

Strengthening the security of DebianApache server logs requires collaborative efforts from multiple aspects. The following strategies can effectively reduce security risks: 1. Log monitoring and analysis Automated log analysis: Use logcheck, logrotate and other tools to regularly check and analyze logs to promptly detect suspicious activities and potential attacks. Real-time monitoring system: Establish a log monitoring system, such as ELKStack (Elasticsearch, Logstash, Kibana), to realize real-time monitoring and analysis of log data. 2. Strict permission settings for log file permissions: Reasonably set log file permissions, such as using chmod640/var/log

See all articles