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