摘要:本文目的是通過自己寫的一個(gè)的簡單的庫花密密碼生成工具,來學(xué)習(xí)我認(rèn)為的庫開發(fā)的一些規(guī)范,以及上持續(xù)構(gòu)建你的項(xiàng)目的一些方法。給自己的項(xiàng)目開啟持續(xù)構(gòu)建。包發(fā)布以及當(dāng)你的代碼完成后,測(cè)試完成后。
本文目的是通過自己寫的一個(gè)php的簡單的庫(花密密碼生成工具),
來學(xué)習(xí)我認(rèn)為的php庫開發(fā)的一些規(guī)范,以及github上持續(xù)構(gòu)建你的項(xiàng)目的一些方法。其實(shí)是為了顯示下邊一系列的的徽章
本文涉及的內(nèi)容有:
項(xiàng)目目錄
php的psr規(guī)范
php備注的規(guī)范
php的包管理器composer
php保證代碼質(zhì)量(php-cs-fix,styleci,phpunit,coveralls)
php的持續(xù)集成Travis CI
php包發(fā)布Packagist 以及 LICENSE
更多的徽章獲得
項(xiàng)目目錄/ |── bin/ //命令行目錄 |── build/ //構(gòu)建目錄 |── src/ //用于存放項(xiàng)目源代碼 |── tests/ //單元測(cè)試目錄 | ├── ClassNameTest/ //測(cè)試目錄 | |── phpunit.xml //phpunit 配置文件 | └── bootstrap.php //phpunit 引導(dǎo)文件 |── vendor/ //第三方依賴庫 |── .gitignore //git忽略文件 |── .gitmessage //git提交規(guī)范文件 |── .php_cs //php-cs-fix配置文件 |── .styleci.yml //https://styleci.io配置文件 |── .travis.yml //Travis CI 配置文件 |── LICENSE //LICENSE |── composer.json //composer配置 └── README.md //READMEphp的psr規(guī)范
詳見
PSR-1 基本代碼規(guī)范:
PSR-2 代碼風(fēng)格規(guī)范:(本篇規(guī)范是 PSR-1 基本代碼規(guī)范的繼承與擴(kuò)展)
PSR-3 日志接口規(guī)范:
PSR-4 自動(dòng)加載相關(guān)
PSR-7 HTTP消息相關(guān)
php備注的規(guī)范PHPDoc WIKI
@name 名字
@abstract 申明變量/類/方法
@access 指明這個(gè)變量、類、函數(shù)/方法的存取權(quán)限
@author 函數(shù)作者的名字和郵箱地址
@category 組織packages
@copyright 指明版權(quán)信息
@const 指明常量
@deprecate 指明不推薦或者是廢棄的信息MyEclipse編碼設(shè)置
@example 示例
@exclude 指明當(dāng)前的注釋將不進(jìn)行分析,不出現(xiàn)在文擋中
@final 指明這是一個(gè)最終的類、方法、屬性,禁止派生、修改。
@global 指明在此函數(shù)中引用的全局變量
@include 指明包含的文件的信息
@link 定義在線連接
@module 定義歸屬的模塊信息
@modulegroup 定義歸屬的模塊組
@package 定義歸屬的包的信息
@param 定義函數(shù)或者方法的參數(shù)信息
@return 定義函數(shù)或者方法的返回信息
@see 定義需要參考的函數(shù)、變量,并加入相應(yīng)的超級(jí)連接。
@since 指明該api函數(shù)或者方法是從哪個(gè)版本開始引入的
@static 指明變量、類、函數(shù)是靜態(tài)的。
@throws 指明此函數(shù)可能拋出的錯(cuò)誤異常,極其發(fā)生的情況
@todo 指明應(yīng)該改進(jìn)或沒有實(shí)現(xiàn)的地方
@var 定義說明變量/屬性。
@version 定義版本信息
php的包管理器composer詳見composer中文網(wǎng)
注意:如果訪問不了國外鏡像,可以全局修改使用中國鏡像
$ composer config -g repo.packagist composer https://packagist.phpcomposer.comphp保證代碼質(zhì)量
這一部分現(xiàn)在有很多解決方案。在github搜索phpQA也很多集成工具包
在我這個(gè)項(xiàng)目主要用到的就是php-cs-fix,phpunit.為了保證在github的代碼風(fēng)格
,用了https://styleci.io。
有關(guān)php-cs-fix可以參考這篇文章文章學(xué)習(xí) php-cs-fixer - PHP 編碼格式化工具
但是上邊文章是php-cs-fix 配置文件是1.*版本的。現(xiàn)在官網(wǎng)升級(jí)到2.*版本。
很多配置文件名變化了。具體變化可以參考官方說明UPGRADE.md
下邊給出在這個(gè)項(xiàng)目里的配置.cs_php
This source file is subject to the MIT license that is bundled with this source code in the file LICENSE. EOF; $finder = PhpCsFixerFinder::create() ->files() ->name("*.php") ->exclude("vendor") ->in(__DIR__) ->ignoreDotFiles(true) ->ignoreVCS(true); ; $fixers = array( "@PSR2" => true, "header_comment" => array("header" => $header), "no_empty_statement" => true, //多余的分號(hào) "no_extra_consecutive_blank_lines" => true, //多余空白行 "include" => true, //include 和文件路徑之間需要有一個(gè)空格,文件路徑不需要用括號(hào)括起來; "no_trailing_comma_in_list_call" => true, //刪除 list 語句中多余的逗號(hào); "no_leading_namespace_whitespace" => true, //命名空間前面不應(yīng)該有空格; "array_syntax" => array("syntax" => "short"), //數(shù)組 【】 php版本大于5.4 "no_blank_lines_after_class_opening" => true, //類開始標(biāo)簽后不應(yīng)該有空白行; "no_blank_lines_after_phpdoc" => true, //PHP 文檔塊開始開始元素下面不應(yīng)該有空白行; "object_operator_without_whitespace" => true, //(->) 兩端不應(yīng)有空格; "binary_operator_spaces" => true, //二進(jìn)制操作符兩端至少有一個(gè)空格; "phpdoc_indent" => true, //phpdoc 應(yīng)該保持縮進(jìn); "phpdoc_no_access" => true, //@access 不應(yīng)該出現(xiàn)在 phpdoc 中; "phpdoc_no_package" => true, "phpdoc_scalar" => true, //phpdoc 標(biāo)量類型聲明時(shí)應(yīng)該使用 int 而不是 integer,bool 而不是 boolean,float 而不是 real 或者 double; "phpdoc_to_comment" => true, //文檔塊應(yīng)該都是結(jié)構(gòu)化的元素; "phpdoc_trim" => true, "phpdoc_no_alias_tag" => array("type" => "var"),// @type 需要使用 @var 代替; "phpdoc_var_without_name" => true, //@var 和 @type 注釋中不應(yīng)該包含變量名; "no_leading_import_slash" => true, //刪除 use 前的空行; //"no_extra_consecutive_blank_lines" => array("use"), //刪除 use 語句塊中的空行; "self_accessor" => true, //在當(dāng)前類中使用 self 代替類名; "no_trailing_comma_in_singleline_array" => true, //PHP 單行數(shù)組最后一個(gè)元素后面不應(yīng)該有空格; "single_blank_line_before_namespace" => true,//命名空間聲明前應(yīng)該有一個(gè)空白行; "single_quote" => true, //簡單字符串應(yīng)該使用單引號(hào)代替雙引號(hào); "binary_operator_spaces" => array("align_equals" => true,"align_double_arrow" => true), //等號(hào) => 對(duì)齊 symfony是不對(duì)齊的 "no_singleline_whitespace_before_semicolons" => true, //禁止只有單行空格和分號(hào)的寫法; "cast_spaces" => true, //變量和修飾符之間應(yīng)該有一個(gè)空格; "standardize_not_equals" => true, //使用 <> 代替 !=; "concat_space" => array("spacing" => "one"), //點(diǎn)連接符左右兩邊有一個(gè)的空格;symfony是沒空格 "ternary_operator_spaces" => true, //三元運(yùn)算符之間的空格標(biāo)準(zhǔn)化 "trim_array_spaces" => true, //數(shù)組需要格式化成和函數(shù)/方法參數(shù)類似,上下沒有空白行; "unary_operator_spaces" => true, //一元運(yùn)算符和運(yùn)算數(shù)需要相鄰; "no_whitespace_in_blank_line" => true, //刪除空白行中多余的空格; "no_multiline_whitespace_before_semicolons" => true, //分號(hào)前的空格 "no_unused_imports" => true, //刪除沒用到的use ); return PhpCsFixerConfig::create() ->setRules($fixers) ->setFinder($finder) ->setUsingCache(false);
另外php-cs-fix都有對(duì)應(yīng)的編輯器插件比如:
PhpStorm
Sublime Text
Vim
styleci在規(guī)定了自己的代碼規(guī)范之后,如何保證別人提交的pr是否符合你的規(guī)范呢。
這時(shí)候就需要用https://styleci.io。通過github帳號(hào)注冊(cè)后。就可以關(guān)聯(lián)你的項(xiàng)目。
在你的項(xiàng)目目錄添加配置文件 .styleci.yml
下邊是和上面.php_cs對(duì)應(yīng)的我的styleci配置文件,具體可以看https://styleci.io文檔
preset: PSR2 risky: false enabled: - no_empty_statement - no_extra_consecutive_blank_lines - include - no_trailing_comma_in_list_call - no_leading_namespace_whitespace - no_blank_lines_after_class_opening - no_blank_lines_after_phpdoc - object_operator_without_whitespace - binary_operator_spaces - phpdoc_indent - phpdoc_no_access - phpdoc_no_package - phpdoc_scalar - phpdoc_to_comment - phpdoc_trim - phpdoc_type_to_var - phpdoc_var_without_name - no_leading_import_slash - remove_lines_between_uses - self_accessor - no_trailing_comma_in_singleline_array - single_blank_line_before_namespace - single_quote - align_equals - no_singleline_whitespace_before_semicolons - cast_spaces - standardize_not_equals - concat_with_spaces - ternary_operator_spaces - trim_array_spaces - unary_operator_spaces - no_whitespace_in_blank_line - no_multiline_whitespace_before_semicolons - no_unused_imports - align_double_arrow - short_array_syntax finder: exclude: - "vendor" name: - "*.php"
另外在https://styleci.io有這個(gè)徽章。,可以自己的項(xiàng)目添加上了。
phpunitphp單元測(cè)試,具體使用可以參考中文手冊(cè)
這里配置好之后主要通過Travis CI進(jìn)行調(diào)用,下邊會(huì)講到。
coverallscoveralls是利用phpunit生成測(cè)試代碼覆蓋率的xml,來展示你的代碼覆蓋率。
網(wǎng)址是https://coveralls.io/。 依然是github注冊(cè)。然后在Travis CI進(jìn)行調(diào)用。需要 satooshi/php-coveralls 這個(gè)庫調(diào)用。
在這個(gè)coveralls配置好之后就可以添加這個(gè)徽章了。
登錄https://travis-ci.org/,依然使用github注冊(cè)之后。給自己的項(xiàng)目開啟持續(xù)構(gòu)建。添加配置文件, ``
language: php php: # - 5.4 # - 5.5 - 5.6 - 7.0 # - 7.1 before_script: - composer self-update - composer install -n --dev --prefer-source script: - mkdir -p build/logs - ./vendor/bin/phpunit -c tests/phpunit.xml --coverage-clover build/logs/clover.xml after_script: #coveralls調(diào)用 默認(rèn)文件是build/logs/clover.xml,如果不是可以添加配置 - travis_retry ./vendor/bin/coveralls -v matrix: fast_finish: true
這時(shí)候push你的代碼就可以開始持續(xù)構(gòu)建了。另外在Travis CI可以獲取這個(gè)徽章。
php包發(fā)布Packagist 以及 LICENSE當(dāng)你的代碼完成后,測(cè)試完成后。就可以發(fā)布到Packagist包管理平臺(tái)了。
如果composer.json配置好,按照官網(wǎng)一步一步來還是比較容易的,記得設(shè)置hook自動(dòng)更新。
另外如果你的composer設(shè)置的國內(nèi)的鏡像,大概會(huì)有一到兩個(gè)小時(shí)的延遲。
關(guān)于LICENSE的選取,可以參考這篇文章如何選擇開源許可證?
在發(fā)布完之后就可以去https://poser.pugx.org/ 獲取這幾個(gè)徽章了。
更多的徽章獲得大家可以通過http://shields.io/這個(gè)網(wǎng)站來獲得,獲得去github添加更多的integrations,來獲得相對(duì)應(yīng)的徽章。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22195.html
摘要:創(chuàng)建帳號(hào)提供的是持續(xù)集成服務(wù),簡稱。在這里引入的原因是我們的項(xiàng)目需要使用服務(wù)進(jìn)行持續(xù)集成和測(cè)試,當(dāng)然你也可以替換成別的單元測(cè)試工具。創(chuàng)建單元測(cè)試用例是單元測(cè)試類庫家族中的一員,使用的一個(gè)主要目的是為我們的模塊創(chuàng)建單元測(cè)試用例。 本文首發(fā)于 Travis CI 持續(xù)集成服務(wù)構(gòu)建 Composer 類庫簡明教程,轉(zhuǎn)載請(qǐng)注明出處! 在項(xiàng)目開發(fā)過程中,編碼工作只是軟件開發(fā)整個(gè)過程中的一小部分環(huán)...
摘要:這大概是我沒有及早使用,或多數(shù)開發(fā)者流連現(xiàn)狀造成的。它就是,一個(gè)的框架。行為驅(qū)動(dòng)開發(fā)是來自測(cè)試驅(qū)動(dòng)開發(fā)的開發(fā)過程。簡單的說,它就是經(jīng)常可能一天幾次將小塊代碼整合進(jìn)基礎(chǔ)代碼當(dāng)中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區(qū)協(xié)同翻譯的文章,已完成翻譯,更多信息請(qǐng)點(diǎn)擊?協(xié)同翻譯介紹?。 文章...
摘要:集成測(cè)試完成后,由運(yùn)維同學(xué)從發(fā)起一個(gè)到分支,此時(shí)會(huì)會(huì)運(yùn)行單元測(cè)試,構(gòu)建鏡像,并發(fā)布到預(yù)發(fā)布環(huán)境測(cè)試人員在預(yù)發(fā)布環(huán)境下再次驗(yàn)證功能,團(tuán)隊(duì)做上線前的其他準(zhǔn)備工作運(yùn)維同學(xué)合并,將為本次發(fā)布的代碼及鏡像自動(dòng)打上版本號(hào)并書寫,同時(shí)發(fā)布到生產(chǎn)環(huán)境。 云原生 (Cloud Native) 是伴隨的容器技術(shù)發(fā)展出現(xiàn)的的一個(gè)詞,最早出自 Pivotal 公司(即開發(fā)了 Spring 的公司)的一本技術(shù)小...
摘要:集成測(cè)試完成后,由運(yùn)維同學(xué)從發(fā)起一個(gè)到分支,此時(shí)會(huì)會(huì)運(yùn)行單元測(cè)試,構(gòu)建鏡像,并發(fā)布到預(yù)發(fā)布環(huán)境測(cè)試人員在預(yù)發(fā)布環(huán)境下再次驗(yàn)證功能,團(tuán)隊(duì)做上線前的其他準(zhǔn)備工作運(yùn)維同學(xué)合并,將為本次發(fā)布的代碼及鏡像自動(dòng)打上版本號(hào)并書寫,同時(shí)發(fā)布到生產(chǎn)環(huán)境。 云原生 (Cloud Native) 是伴隨的容器技術(shù)發(fā)展出現(xiàn)的的一個(gè)詞,最早出自 Pivotal 公司(即開發(fā)了 Spring 的公司)的一本技術(shù)小...
摘要:來這里看看的工程師如何進(jìn)行持續(xù)集成與持續(xù)部署。主要介紹了豆瓣移動(dòng)持續(xù)集成和測(cè)試相關(guān)實(shí)踐,用工具化自動(dòng)化社會(huì)化測(cè)試來解決遇到的問題,將打包發(fā)布環(huán)節(jié)自動(dòng)化。這期的持續(xù)集成實(shí)踐分享就到這里。 我們常看到許多團(tuán)隊(duì)和開發(fā)者分享他們的持續(xù)集成實(shí)踐經(jīng)驗(yàn),本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項(xiàng)目搭建持續(xù)集成的實(shí)踐,以及一些國內(nèi)外公司的內(nèi)部持續(xù)集成...
閱讀 4095·2023-04-26 01:48
閱讀 3267·2021-10-13 09:40
閱讀 1746·2021-09-26 09:55
閱讀 3633·2021-08-12 13:23
閱讀 1791·2021-07-25 21:37
閱讀 3436·2019-08-30 15:53
閱讀 1399·2019-08-29 14:16
閱讀 1400·2019-08-29 12:59