PHP开发必备 PHP持续集成工具介绍(上)
在本文中,将介绍在目前软件工程中经常用到的持续集成概念,并且会介绍在PHP开发中,如何能用好PHP目前开源的一些持续集成管理工具,去管理好项目。
持续集成的概念
持续集成的概念是在现代软件工程中提出的,最早见于敏捷开发方法论中,大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
下面介绍PHP中的持续集成工具:
PHPUNIT
首先,PHPUNIT是PHP中的单元测试利器,项目地址在:http://www.phpunit.it。它
能自动运行你编写的单元测试代码,并给出是否通过的结果。安装步骤如下,可以使用PHP中的PEAR安装:
<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>
之后,就可以在命令行下,以如下格式执行phpunit:
Phpunit 单元测试的php文件名.php
此外,还可以执行如下命令,生成单元测试的覆盖报告:
phpunit --coverage-html ../CodeCoverage
这将在指定的目录中生成单元测试的覆盖报告,比如这个例子中,将在目录CodeCoverage中生成单元测试覆盖报告,如下图:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="cursor: hand" border="1" alt="PHP开发必备 PHP持续集成工具介绍(上)" href="/picshow/index595837.shtml" src="http://www.bkjia.com/uploadfile/2013/0904/20130904095310781.jpg" />
▲点击看大图
如果点上图的每一个PHP文件,还可以具体看到每个文件的单元测试覆盖情况,如下图:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="cursor: hand" border="1" alt="PHP开发必备 PHP持续集成工具介绍(上)" href="/picshow/index595838.shtml" src="http://www.bkjia.com/uploadfile/2013/0904/20130904095310397.jpg" />
▲点击看大图
从上图中,可以看到每个PHP文件中,调用的方法的单元测试覆盖情况,还可以看到具体哪些代码行是已经单元测试覆盖过,哪些没有覆盖过(绿色表示已经覆盖,橙色表示还没覆盖),如下图:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="cursor: hand" border="1" alt="PHP开发必备 PHP持续集成工具介绍(上)" href="/picshow/index595839.shtml" src="http://www.bkjia.com/uploadfile/2013/0904/20130904095310154.jpg" />
▲点击看大图
PHP CodeSniffer
PHP CodeSniffer是一个PHP的代码风格检测器,它根据预先设定好的PHP编码风格和规则,去检查应用中的代码风格情况,内置了ZEND,PEAR的编码风格规则,当然开发者也可以进行自定义。项目的地址在:http://pear.php.net/package/PHP_CodeSniffer/redirected,安装方法如下:
<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>
其中phpcs –standard后指定了使用Zend的建议代码风格标准进行检查,最后一个参数是要检查的PHP文件所在的目录。运行后,检查的一个效果图如下图所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="cursor: hand" border="1" alt="PHP CodeSniffer" href="/picshow/index595841.shtml" src="http://www.bkjia.com/uploadfile/2013/0904/20130904095310674.jpg" />
▲点击查看大图
PHP Depend
PHP Depend(http://pdepend.org/)是一个PHP中静态代码分析的工具。它可以用来检查你的PHP项目中的代码规模和复杂程度。安装方法如下:
<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>
使用的一个例子如下:
pdepend --jdepend-xml=../jdepend.xml --jdepend-chart=../dependencies.svg --overview-pyramid=../overview-pyramid.svg
上面会生成一个XML文件,两个SVG的图形文件。其中XML文件说明了项目中各PHP文件的互相依赖调用(引用)情况及每个方法、函数,类的代码行,一个例子如下:
<ol class="dp-c"> <li class="alt"><span><span><?xml version=”1.0” encoding=”UTF-8”?> </span></span></li> <li><span><metrics> </metrics></span></li> <li class="alt"><span><package><span class="keyword">global</span><span>” noc=”17” nof=”0” noi=”0” nom=”237”> </span></package></span></li> <li><span><span class="keyword">class</span><span> name=”data_container”nom=”55”> </span></span></li> <li class="alt"><span><file><span class="keyword">case</span><span>-study/libs/data/container.php”/> </span></file></span></li> <li> <span></span><span class="keyword">class</span><span>> </span> </li> <li class="alt"><span><span class="keyword">class</span><span> name=”data_download” nom=”10”> </span></span></li> <li><span><file><span class="keyword">case</span><span>-study/libs/data/download.php”/> </span></file></span></li> <li class="alt"> <span></span><span class="keyword">class</span><span>> </span> </li> </ol>
其中的noc含义是类的代码的行书,nof为函数的代码行数,noi为接口代码行数,nom为方法method代码行数。
接下来我们来看下产生的一张SVG图,该图如下所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="cursor: hand" border="1" alt="PHP CodeSniffer" href="/picshow/index595842.shtml" src="http://www.bkjia.com/uploadfile/2013/0904/20130904095310442.jpg" />
这张图的反映了项目中包的依赖性度量情况。其基本理论来源于Robert C. Martin的论文(http://www.objectmentor.com/resources/articles/oodmetrc.pdf)中所介绍的关于软件中模块依赖性和稳定性的度量。其中,提到了如下概念:
Afferent Couplings (Ca)
依赖于被分析package的其他package的数量,用于衡量pacakge的职责。
简单来说,即有多少其他的包或模块调用了被分析的包或模块。
Efferent Couplings (Ce)
被分析package的类所依赖的其他package的数量,用于衡量package的独立性。
即它调用了多少其他包。
Abstractness (A)
被分析package中的抽象类和接口与所在package所有类数量的比例,取值范围为0-1。如果该值为0,证明包中没任何抽象类,有的只是具体实现逻辑方法的类,如果该值为1,则包中只有抽象类或接口了
Instability (I)
I=Ce/(Ce+Ca),用于衡量package的不稳定性,取值范围为0到1。I=0表示最稳定,I=1表示最不稳定。
Distance (D)
用于衡量package在稳定性和抽象性之间的平衡。可以看到,最理想的情况是A+I越趋近1的,这样能获得抽象性和稳定性的最佳平衡。
此外,介绍php depend中生成的另外一张图的含义,图片如下:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="cursor: hand" border="1" alt="PHP CodeSniffer" href="/picshow/index595844.shtml" src="http://www.bkjia.com/uploadfile/2013/0904/20130904095311587.jpg" />
在这张图中,最上面的ANDC表示继承其他类的平均数目,即项目中有多少类是继承其他的类;AHH是继承其他类的层次数。CALLS是方法被调用的总的次数,FANOUT是类所引用的类型数目。而CYCLO是圈复杂度(关于圈复杂度的解析,请参考(http://en.wikipedia.org/wiki/Cyclomatic_complexity)。LOC是代码行数,NOM是项目中的方法的数目,NOC为项目中类的数目,NOP为项目中包的数目。
根据上图中标明的除法规则,可以计算出相关的数据。更多的请参考php depend手册(http://pdepend.org/documentation/handbook/reports/overview-pyramid.html)的详细解析。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

Debian Systems에서 ReadDir 시스템 호출은 디렉토리 내용을 읽는 데 사용됩니다. 성능이 좋지 않은 경우 다음과 같은 최적화 전략을 시도해보십시오. 디렉토리 파일 수를 단순화하십시오. 대규모 디렉토리를 가능한 한 여러 소규모 디렉토리로 나누어 읽기마다 처리 된 항목 수를 줄입니다. 디렉토리 컨텐츠 캐싱 활성화 : 캐시 메커니즘을 구축하고 정기적으로 캐시를 업데이트하거나 디렉토리 컨텐츠가 변경 될 때 캐시를 업데이트하며 readDir로 자주 호출을 줄입니다. 메모리 캐시 (예 : Memcached 또는 Redis) 또는 로컬 캐시 (예 : 파일 또는 데이터베이스)를 고려할 수 있습니다. 효율적인 데이터 구조 채택 : 디렉토리 트래버스를 직접 구현하는 경우 디렉토리 정보를 저장하고 액세스하기 위해보다 효율적인 데이터 구조 (예 : 선형 검색 대신 해시 테이블)를 선택하십시오.

웹 사이트 성능 최적화는 액세스 로그의 심층 분석과 분리 할 수 없습니다. NGINX 로그는 웹 사이트를 방문하는 사용자의 자세한 정보를 기록합니다. 이 데이터를 영리하게 사용하면 웹 사이트의 속도가 효과적으로 향상 될 수 있습니다. 이 기사는 NGINX 로그를 기반으로 여러 웹 사이트 성능 최적화 방법을 소개합니다. 1. 사용자 행동 분석 및 최적화. NGINX 로그를 분석하여 사용자 동작에 대한 깊은 이해를 얻고이를 기반으로 목표 최적화를 수행 할 수 있습니다. 고주파 액세스 IP 식별 : 액세스 빈도가 가장 높은 IP 주소를 찾고, 대역폭 증가 또는 특정 콘텐츠의 응답 속도 향상과 같은 이러한 IP 주소의 서버 리소스 구성을 최적화합니다. 상태 코드 분석 : 다른 HTTP 상태 코드 (예 : 404 오류)의 빈도를 분석하고 웹 사이트 탐색 또는 컨텐츠 관리의 문제를 찾고 진행하십시오.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

이 기사는 데비안 시스템에서 쓸모없는 소프트웨어 패키지를 청소하고 디스크 공간을 확보하는 방법에 대해 설명합니다. 1 단계 : 패키지 목록 업데이트 패키지 목록이 최신 상태인지 확인하십시오. sudoaptupdate 2 단계 : 설치된 패키지보기 다음 명령을 사용하여 설치된 모든 패키지를 보려면 다음 명령을 사용하십시오. Aptitude는 패키지를 안전하게 삭제하는 데 도움이되는 제안을 제공합니다.

데비안 시스템의 readdir 함수는 디렉토리 컨텐츠를 읽는 데 사용되는 시스템 호출이며 종종 C 프로그래밍에 사용됩니다. 이 기사에서는 ReadDir를 다른 도구와 통합하여 기능을 향상시키는 방법을 설명합니다. 방법 1 : C 언어 프로그램을 파이프 라인과 결합하고 먼저 C 프로그램을 작성하여 readDir 함수를 호출하고 결과를 출력하십시오.#포함#포함#포함#포함#includinTmain (intargc, char*argv []) {dir*dir; structdirent*entry; if (argc! = 2) {

이 안내서는 데비안 시스템에서 syslog를 사용하는 방법을 배우도록 안내합니다. Syslog는 로깅 시스템 및 응용 프로그램 로그 메시지를위한 Linux 시스템의 핵심 서비스입니다. 관리자가 시스템 활동을 모니터링하고 분석하여 문제를 신속하게 식별하고 해결하는 데 도움이됩니다. 1. syslog에 대한 기본 지식 syslog의 핵심 기능에는 다음이 포함됩니다. 로그 메시지 중앙 수집 및 관리; 다중 로그 출력 형식 및 대상 위치 (예 : 파일 또는 네트워크) 지원; 실시간 로그보기 및 필터링 기능 제공. 2. Syslog 설치 및 구성 (RSYSLOG 사용) Debian 시스템은 기본적으로 RSYSLOG를 사용합니다. 다음 명령으로 설치할 수 있습니다 : sudoaptupdatesud

이 기사에서는 데비안 시스템에서 Hadoop 데이터 처리 효율성을 향상시키는 방법에 대해 설명합니다. 최적화 전략에는 하드웨어 업그레이드, 운영 체제 매개 변수 조정, Hadoop 구성 수정 및 효율적인 알고리즘 및 도구 사용이 포함됩니다. 1. 하드웨어 리소스 강화는 모든 노드에 일관된 하드웨어 구성, 특히 CPU, 메모리 및 네트워크 장비 성능에주의를 기울일 수 있도록합니다. 전반적인 처리 속도를 향상시키기 위해서는 고성능 하드웨어 구성 요소를 선택하는 것이 필수적입니다. 2. 운영 체제 조정 파일 설명 자 및 네트워크 연결 : /etc/security/limits.conf 파일을 수정하여 파일 설명자의 상한을 늘리고 동시에 시스템에 의해 열 수 있습니다. JVM 매개 변수 조정 : Hadoop-env.sh 파일에서 조정
