成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在github規(guī)范開發(fā)以及持續(xù)構建php項目

Sleepy / 2803人閱讀

摘要:本文目的是通過自己寫的一個的簡單的庫花密密碼生成工具,來學習我認為的庫開發(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                       //README
php的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.com
php保證代碼質量

這一部分現(xiàn)在有很多解決方案。在github搜索phpQA也很多集成工具包

在我這個項目主要用到的就是php-cs-fix,phpunit.為了保證在github的代碼風格
,用了https://styleci.io。

php-cs-fix

有關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有這個徽章。,可以自己的項目添加上了。

phpunit

php單元測試,具體使用可以參考中文手冊

這里配置好之后主要通過Travis CI進行調用,下邊會講到。

coveralls

coveralls是利用phpunit生成測試代碼覆蓋率的xml,來展示你的代碼覆蓋率。
網(wǎng)址是https://coveralls.io/。 依然是github注冊。然后在Travis CI進行調用。需要 satooshi/php-coveralls 這個庫調用。
在這個coveralls配置好之后就可以添加這個徽章了。

php的持續(xù)集成Travis CI

登錄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

相關文章

  • Travis CI 持續(xù)集成服務構建 Composer 類庫簡明教程

    摘要:創(chuàng)建帳號提供的是持續(xù)集成服務,簡稱。在這里引入的原因是我們的項目需要使用服務進行持續(xù)集成和測試,當然你也可以替換成別的單元測試工具。創(chuàng)建單元測試用例是單元測試類庫家族中的一員,使用的一個主要目的是為我們的模塊創(chuàng)建單元測試用例。 本文首發(fā)于 Travis CI 持續(xù)集成服務構建 Composer 類庫簡明教程,轉載請注明出處! 在項目開發(fā)過程中,編碼工作只是軟件開發(fā)整個過程中的一小部分環(huán)...

    DoINsiSt 評論0 收藏0
  • 看吧,這就是現(xiàn)代化 PHP 該有的樣子

    摘要:這大概是我沒有及早使用,或多數(shù)開發(fā)者流連現(xiàn)狀造成的。它就是,一個的框架。行為驅動開發(fā)是來自測試驅動開發(fā)的開發(fā)過程。簡單的說,它就是經(jīng)??赡芤惶鞄状螌⑿K代碼整合進基礎代碼當中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區(qū)協(xié)同翻譯的文章,已完成翻譯,更多信息請點擊?協(xié)同翻譯介紹?。 文章...

    Tangpj 評論0 收藏0
  • 容器環(huán)境下的持續(xù)集成最佳實踐:構建基于 Drone + GitFlow + K8s 的云原生語義化

    摘要:集成測試完成后,由運維同學從發(fā)起一個到分支,此時會會運行單元測試,構建鏡像,并發(fā)布到預發(fā)布環(huán)境測試人員在預發(fā)布環(huán)境下再次驗證功能,團隊做上線前的其他準備工作運維同學合并,將為本次發(fā)布的代碼及鏡像自動打上版本號并書寫,同時發(fā)布到生產環(huán)境。 云原生 (Cloud Native) 是伴隨的容器技術發(fā)展出現(xiàn)的的一個詞,最早出自 Pivotal 公司(即開發(fā)了 Spring 的公司)的一本技術小...

    asoren 評論0 收藏0
  • 容器環(huán)境下的持續(xù)集成最佳實踐:構建基于 Drone + GitFlow + K8s 的云原生語義化

    摘要:集成測試完成后,由運維同學從發(fā)起一個到分支,此時會會運行單元測試,構建鏡像,并發(fā)布到預發(fā)布環(huán)境測試人員在預發(fā)布環(huán)境下再次驗證功能,團隊做上線前的其他準備工作運維同學合并,將為本次發(fā)布的代碼及鏡像自動打上版本號并書寫,同時發(fā)布到生產環(huán)境。 云原生 (Cloud Native) 是伴隨的容器技術發(fā)展出現(xiàn)的的一個詞,最早出自 Pivotal 公司(即開發(fā)了 Spring 的公司)的一本技術小...

    DevTalking 評論0 收藏0
  • fir.im weekly - 「 持續(xù)集成 」實踐教程合集

    摘要:來這里看看的工程師如何進行持續(xù)集成與持續(xù)部署。主要介紹了豆瓣移動持續(xù)集成和測試相關實踐,用工具化自動化社會化測試來解決遇到的問題,將打包發(fā)布環(huán)節(jié)自動化。這期的持續(xù)集成實踐分享就到這里。 我們??吹皆S多團隊和開發(fā)者分享他們的持續(xù)集成實踐經(jīng)驗,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項目搭建持續(xù)集成的實踐,以及一些國內外公司的內部持續(xù)集成...

    A Loity 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<