文档章节

学习PHP精粹,编写高效PHP代码之质量保证

风格时光
 风格时光
发布于 2014/06/08 20:44
字数 1217
阅读 332
收藏 26
点赞 0
评论 0

一、使用静态分析工具测量质量

我们用静态分析测量代码而不运行它。实际上,我们将这些工具用于评估代码、读取文件、衡量它所写的要素。使用这些工具,可以帮助我们对代码库有一个完整的层次化的认识,甚至在代码库变得更大、更复杂的时候也能掌握。

静态分析工具是项目过程中的一个关键组成部分,但是,只有定期使用它们,并以理想的方式进行每一次提交,静态分析工具才真正显示出价值。这些工具涵盖了代码的所有方面,从计数类和计算行数,到识别哪里有提示使用复制和粘贴的类似代码段。然后我们来看看静态分析工具在代码质量中两个特别关键的问题上如何帮助我们:编码标准和文档。

1、phploc

phploc:https://github.com/sebastianbergmann/phploc

PHP代码行(phploc)可能并不是一个非常有趣的静态分析工具,但它确实给了我们一些有趣的信息,特别是随着时间的推移当我们反复运行它的时候。phploc提供项目拓扑结构以及尺寸的相关信息。

例如测试一个标准的WordPress版本,我们只需使用如下命令:

$ phploc wordpress

2、phpcpd

phpcpd:https://github.com/sebastianbergmann/phpcpd

PHP复制粘贴器(phpcpd)看起来是一个在代码中寻找类似模式的工具,我们使用它是为了在代码库中识别代码在何处被复制或粘贴。这是常规构建过程中的一个非常有用的工具,但是从输出中获得正确的编号会让项目与项目有所不同。

同样,如果我们测试WordPress,可以使用下面的命令:

$ phpcpd wordpress

 

3、phpmd

phpmd:http://phpmd.org/

PHP项目消息探测器(phpmd)是一个试图量化所谓开发老手所说的“代码发出的气味”的工具。它使用一系列指标寻找似乎失衡的项目元素。该工具生成大量的输出,其中大部分都是好的建议,下面是一个要求phpmd在WordPress中检查命名混乱的命令:

$ phpmd wordpress/  text naming

 

二、编码标准

编码标准是一个在很多开发团队中引起激烈争论的话题,既然缩进和使用空格并未影响代码的运行,那为什么我们要创建格式化的规则并且严格遵守呢?事实上,当我们已经习惯于某个编码风格,而且代码以我们期望的方式排列时,它会变得更加容易阅读。但是,在实际开发过程中,很容易忘记规则,所以需要工具区检查所有的代码。

1、使用PHP代码探测器检查编码标准

PHP代码探测器:http://pear.php.net/package/PHP_CodeSniffer

首先,你需要在服务器上安装这个工具。无论它在开发机器还是开发服务器上,这完全取决于你所拥有的可用资源。

安装后,就可以使用下面的命令测试代码了:

phpcs --standard=PEAR robot.php

 

2、查看违反编码标准的地方

PHP代码探测器有几个非常重要的报表样式,你可以用它们看着所用代码库的“重点”、我们将这些以详细报表的同样方式输出到屏幕上,它们也可以生成其他格式。

要生成一个汇总报表,只需这样做:

phpcs --standard=PEAR --report=summary *

3、查看PHP代码探测器标准

有几个编码标准是PHP代码探测器默认运行的,你可以生成或设置任何自己的标准。若想看到有哪些可用的标准,你可以运行具有-i开关的phpcs。

$ phpcs -i

 

三、文档和代码

使用phpDocumentor将注释转换为文档。

phpDocumentor:http://www.phpdoc.org/

例如:

phpdoc -t docs -o HTML:Smarty:PHP -d .

四、源代码管理

常用源代码管理工具:

Subversion:http://subversion.apache.org/

Git:http://git-scm.com/

五、自动部署

Phing:http://www.phing.info/

Phing 是一个基于Apache ANT 的项目构建系统。Phing使用基于XML的配置,默认保存在一个名为build.xml的文件中。

我们给这个项目命令,并定义一系列属于这个项目的任务,还可以指定哪些任务被默认运行,都可以通过Phing进行配置。

© 著作权归作者所有

共有 人打赏支持
风格时光
粉丝 0
博文 4
码字总数 4542
作品 0
淮南
程序员
10 件在 PHP 7 中不要做的事情

1. 不要使用函数 这一天终于来了,从此你不仅仅“不应该”使用函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的函数,或者更灵活的 PDO 实现。 2. 不要编写垃圾代码...

两味真火 ⋅ 2016/09/18 ⋅ 52

学习PHP精粹,编写高效PHP代码之安全性

一、过滤输入、避免输出 有时我们将短语“过滤输入、避免输出”缩写为FIEO,这已成为PHP应用程序的安全真言。 1、利用ctype进行验证 ctype:http://php.net/ctype 2、利用PCRE(Perl兼容的正...

风格时光 ⋅ 2014/06/09 ⋅ 0

PHP机器学习/神经网络框架:PHP-ML库

PHP机器学习/神经网络框架:PHP-ML库 Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流2017-10-1039 阅读 PHP框架神经网络 php-ml是一个使用PHP编写的机器学习库。虽然我们知道,python或...

Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流 ⋅ 2017/10/10 ⋅ 0

成为一个 PHP 专家:缺失的环节

这一篇文章是“Becoming a PHP Professional”系列 4 篇博文中的第 1 篇。 当浏览各类与PHP相关的博客时,比如Quora上的问题,谷歌群组,简讯和杂志,我经常注意到技能的等级分化。问题都类似...

oschina ⋅ 2014/02/27 ⋅ 54

PECL 和 PEAR 有什么区别?

要为大家分享的内容是PECL 和 PEAR 他们之间的不同和相同之处。 PEAR 是“PHP Extension and Application Repository”的缩写,即PHP扩展和应用仓库。   PEAR 将PHP程序开发过程中常用的功...

slagga ⋅ 2016/11/15 ⋅ 0

共青团中央网络影视中心招聘PHP

岗位职责: -配合系统分析人员完成软件系统以及模块的需求分析和了解; -负责系统的功能定义,程序设计; -负责有关技术方案、文档的编写; -保证编码质量,不定期做代码检查并做BUG分析; ...

guhongzi ⋅ 2014/09/24 ⋅ 0

PHP开发框架--Leaps

=Leaps简单php开发 for You != 现在PHP开发框架非常多,一个开发框架优秀与否与它有多少特性没有太大的关系。特性也不能告诉你框架代码的质量如何、性能如何、细节处理的如何、安全性如何。...

灵魂架构师 ⋅ 2013/01/17 ⋅ 0

今年读过的还不错的计算机类书籍

今年读过的还不错的计算机类书籍 一年又快过去了,今年恶补了很多计算机基础知识,参kao了网上各种程序员必读书目,看下来觉得很有收获。 1. Web性能权威指南 干货很多,简明易懂,优化清单很...

xiaorong919 ⋅ 2015/12/14 ⋅ 0

零基础的网站开发初学者如何系统的学习?

A.学习背景 开始网站开发,起先是从手机网站的UBB语法开始的,也因此有了深入学习的兴趣。为了让学习的热情膨胀,我有意的培养这一爱好 ,定位了自己要成为一名优秀的网站开发员的目标。 作为...

李佳顺 ⋅ 2012/12/25 ⋅ 3

PHP机器学习库php-ml的简单测试和使用

php-ml是一个使用PHP编写的机器学习库。虽然我们知道,python或者是C++提供了更多机器学习的库,但实际上,他们大多都略显复杂,配置起来让很多新手感到绝望。php-ml这个机器学习库虽然没有特...

sshpp ⋅ 2017/07/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 45分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 54分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 12

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部