摘要:本文目的是通過自己寫的一個的簡單的庫花密密碼生成工具,來學習我認為的庫開發的一些規范,以及上持續構建你的項目的一些方法。給自己的項目開啟持續構建。包發布以及當你的代碼完成后,測試完成后。
本文目的是通過自己寫的一個php的簡單的庫(花密密碼生成工具),
來學習我認為的php庫開發的一些規范,以及github上持續構建你的項目的一些方法。其實是為了顯示下邊一系列的的徽章
本文涉及的內容有:
項目目錄
php的psr規范
php備注的規范
php的包管理器composer
php保證代碼質量(php-cs-fix,styleci,phpunit,coveralls)
php的持續集成Travis CI
php包發布Packagist 以及 LICENSE
更多的徽章獲得
項目目錄/ |── bin/ //命令行目錄 |── build/ //構建目錄 |── src/ //用于存放項目源代碼 |── tests/ //單元測試目錄 | ├── ClassNameTest/ //測試目錄 | |── phpunit.xml //phpunit 配置文件 | └── bootstrap.php //phpunit 引導文件 |── vendor/ //第三方依賴庫 |── .gitignore //git忽略文件 |── .gitmessage //git提交規范文件 |── .php_cs //php-cs-fix配置文件 |── .styleci.yml //https://styleci.io配置文件 |── .travis.yml //Travis CI 配置文件 |── LICENSE //LICENSE |── composer.json //composer配置 └── README.md //READMEphp的psr規范
詳見
PSR-1 基本代碼規范:
PSR-2 代碼風格規范:(本篇規范是 PSR-1 基本代碼規范的繼承與擴展)
PSR-3 日志接口規范:
PSR-4 自動加載相關
PSR-7 HTTP消息相關
php備注的規范PHPDoc WIKI
@name 名字
@abstract 申明變量/類/方法
@access 指明這個變量、類、函數/方法的存取權限
@author 函數作者的名字和郵箱地址
@category 組織packages
@copyright 指明版權信息
@const 指明常量
@deprecate 指明不推薦或者是廢棄的信息MyEclipse編碼設置
@example 示例
@exclude 指明當前的注釋將不進行分析,不出現在文擋中
@final 指明這是一個最終的類、方法、屬性,禁止派生、修改。
@global 指明在此函數中引用的全局變量
@include 指明包含的文件的信息
@link 定義在線連接
@module 定義歸屬的模塊信息
@modulegroup 定義歸屬的模塊組
@package 定義歸屬的包的信息
@param 定義函數或者方法的參數信息
@return 定義函數或者方法的返回信息
@see 定義需要參考的函數、變量,并加入相應的超級連接。
@since 指明該api函數或者方法是從哪個版本開始引入的
@static 指明變量、類、函數是靜態的。
@throws 指明此函數可能拋出的錯誤異常,極其發生的情況
@todo 指明應該改進或沒有實現的地方
@var 定義說明變量/屬性。
@version 定義版本信息
php的包管理器composer詳見composer中文網
注意:如果訪問不了國外鏡像,可以全局修改使用中國鏡像
$ composer config -g repo.packagist composer https://packagist.phpcomposer.comphp保證代碼質量
這一部分現在有很多解決方案。在github搜索phpQA也很多集成工具包
在我這個項目主要用到的就是php-cs-fix,phpunit.為了保證在github的代碼風格
,用了https://styleci.io。
有關php-cs-fix可以參考這篇文章文章學習 php-cs-fixer - PHP 編碼格式化工具
但是上邊文章是php-cs-fix 配置文件是1.*版本的。現在官網升級到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"), //數組 【】 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 不應該出現在 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 單行數組最后一個元素后面不應該有空格; "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, //數組需要格式化成和函數/方法參數類似,上下沒有空白行; "unary_operator_spaces" => true, //一元運算符和運算數需要相鄰; "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在規定了自己的代碼規范之后,如何保證別人提交的pr是否符合你的規范呢。
這時候就需要用https://styleci.io。通過github帳號注冊后。就可以關聯你的項目。
在你的項目目錄添加配置文件 .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,來展示你的代碼覆蓋率。
網址是https://coveralls.io/。 依然是github注冊。然后在Travis CI進行調用。需要 satooshi/php-coveralls 這個庫調用。
在這個coveralls配置好之后就可以添加這個徽章了。
登錄https://travis-ci.org/,依然使用github注冊之后。給自己的項目開啟持續構建。添加配置文件, ``
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你的代碼就可以開始持續構建了。另外在Travis CI可以獲取這個徽章。
php包發布Packagist 以及 LICENSE當你的代碼完成后,測試完成后。就可以發布到Packagist包管理平臺了。
如果composer.json配置好,按照官網一步一步來還是比較容易的,記得設置hook自動更新。
另外如果你的composer設置的國內的鏡像,大概會有一到兩個小時的延遲。
關于LICENSE的選取,可以參考這篇文章如何選擇開源許可證?
在發布完之后就可以去https://poser.pugx.org/ 獲取這幾個徽章了。
更多的徽章獲得大家可以通過http://shields.io/這個網站來獲得,獲得去github添加更多的integrations,來獲得相對應的徽章。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22195.html
摘要:創建帳號提供的是持續集成服務,簡稱。在這里引入的原因是我們的項目需要使用服務進行持續集成和測試,當然你也可以替換成別的單元測試工具。創建單元測試用例是單元測試類庫家族中的一員,使用的一個主要目的是為我們的模塊創建單元測試用例。 本文首發于 Travis CI 持續集成服務構建 Composer 類庫簡明教程,轉載請注明出處! 在項目開發過程中,編碼工作只是軟件開發整個過程中的一小部分環...
摘要:這大概是我沒有及早使用,或多數開發者流連現狀造成的。它就是,一個的框架。行為驅動開發是來自測試驅動開發的開發過程。簡單的說,它就是經常可能一天幾次將小塊代碼整合進基礎代碼當中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區協同翻譯的文章,已完成翻譯,更多信息請點擊?協同翻譯介紹?。 文章...
摘要:集成測試完成后,由運維同學從發起一個到分支,此時會會運行單元測試,構建鏡像,并發布到預發布環境測試人員在預發布環境下再次驗證功能,團隊做上線前的其他準備工作運維同學合并,將為本次發布的代碼及鏡像自動打上版本號并書寫,同時發布到生產環境。 云原生 (Cloud Native) 是伴隨的容器技術發展出現的的一個詞,最早出自 Pivotal 公司(即開發了 Spring 的公司)的一本技術小...
摘要:集成測試完成后,由運維同學從發起一個到分支,此時會會運行單元測試,構建鏡像,并發布到預發布環境測試人員在預發布環境下再次驗證功能,團隊做上線前的其他準備工作運維同學合并,將為本次發布的代碼及鏡像自動打上版本號并書寫,同時發布到生產環境。 云原生 (Cloud Native) 是伴隨的容器技術發展出現的的一個詞,最早出自 Pivotal 公司(即開發了 Spring 的公司)的一本技術小...
摘要:來這里看看的工程師如何進行持續集成與持續部署。主要介紹了豆瓣移動持續集成和測試相關實踐,用工具化自動化社會化測試來解決遇到的問題,將打包發布環節自動化。這期的持續集成實踐分享就到這里。 我們常看到許多團隊和開發者分享他們的持續集成實踐經驗,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項目搭建持續集成的實踐,以及一些國內外公司的內部持續集成...
閱讀 4108·2023-04-26 01:48
閱讀 3275·2021-10-13 09:40
閱讀 1752·2021-09-26 09:55
閱讀 3645·2021-08-12 13:23
閱讀 1810·2021-07-25 21:37
閱讀 3440·2019-08-30 15:53
閱讀 1405·2019-08-29 14:16
閱讀 1406·2019-08-29 12:59