PHP Laravel 개발자를 위한 지속적인 통합 도구 7개
목표는 우리의 코드를 위해 각종 테스트를 설정하는 것이지, 필요없다
모든 서버를 제공하거나 유지보수합니다.신속한 피드백 주기를 통해 우리는
잘못을 일찌감치 발견하고 잘못이 발전하기 전에 바로잡을 수 있다.
괜찮은 것 같은데?자, 시작합시다.
코드 분석 테스트
코드 분석은 스캔 소스 코드 중의 일부 구조를 포함한다
이것은 설계 결함과 엉망인 인코딩 같은 더욱 심각한 문제를 초래할 수 있다
실천은 통상적으로 코드 냄새라고 부른다.
일부 코드 분석 도구는 잘못된 패턴을 찾아내는 데 전념한다. 함수
파라미터가 너무 많고, 종류가 너무 많거나, 끼워 넣는 구조가 너무 깊다.
다른 사람들은 들여쓰기 규칙, 명칭 약정 등 스타일을 검사한다.
모든 분석은 반드시 몇 가지 표준으로부터 시작해야 한다.이 규칙들은,
하루가 끝날 때는 주관적이지만 이전의 경험에 따르면.
이러한 규칙은 일반적으로 구성하고 사용자 정의할 수 있습니다.
PHP 혼란 감지기
PHP Mess Detector(phpmd) 코드 냄새 검사: 서툴고 복잡하거나 사용하지 않은 코드.그것의 영감은 PMD 프로젝트에서 나왔다.
phpmd는 단독으로 사용하거나 사용하지 않을 수 있는 여러 개의 규칙 집합을 추가합니다.
기본 용도:
$ phpmd SOURCE_FILE_OR_DIR REPORT_FORMAT RULESETS
기본 제공 규칙은 다음과 같습니다.$ phpmd src text cleancode,codesize,controversial,design,naming,unusedcode
ProvisionerCommand.php:38 The variable $myvar_id is not named in camelCase.
ProvisionerCommand.php:38 Avoid variables with short names like $io. Configured minimum length is 3.
PermissionsComponent.php:53 Avoid unused private methods such as 'checkAccount'.
PagesController.php:349 Avoid excessively long variable names like $view_registration_count. Keep variable name length under 20.
ProvisionersController.php:106 The method delete uses an else expression. Else is never necessary and you can simplify the code to work without else.
만약 이전에 프로젝트에 대해 어떠한 코드 분석도 한 적이 없다면, 그것은머리카락을 뽑고 싶을 수도 있어.걱정하지 말고 냉정을 유지해라
환자, 우리가 코드를 다 정리한 후에 우리의 생활은 좋아질 것이다
더 쉬워요.
명령줄을 통해 규칙을 설정하는 것이 아니라 xml 파일을 만들 수 있습니다
소스 코드 관리에서 다음을 확인할 수 있습니다.
$ phpmd src text myrules.xml
<?xml version="1.0"?>
<ruleset name="Basic"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0
http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="
http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>
First basic ruleset for code analysis...
</description>
<!-- Import all rule sets -->
<rule ref="rulesets/cleancode.xml" />
<rule ref="rulesets/codesize.xml" />
<rule ref="rulesets/controversial.xml" />
<rule ref="rulesets/design.xml" />
<rule ref="rulesets/naming.xml">
<exclude name="ShortVariable" />
<exclude name="LongVariable" />
</rule>
</ruleset>
PHP 코드 탐지기
PHP Code sniffer(phpcs)은 스타일 검사기입니다.만약 당신이 짧은 벨벳 (jshint,pylint,checkstyle 등) 을 사용한 적이 있다면, 당신은 이미 그것의 용도를 알고 있습니다.
phpcs
은 들여쓰기, 주석 부족, 명명 약정 등을 검사할 수 있다.PHP 코드 탐지기는 PEAR, PSR2, Zend 등 다양한 유행하는 PHP 스타일을 탑재하고 있다.저희도 룰을 정하거나 섞을 수 있어요.
기존의 검사에서
일반적인 호출은 다음과 같습니다.
$ phpcs FILE_OR_DIR --standard=STANDARD_NAME
$ phpcs FILE_OR_DIR --report-full --standard=PEAR
FILE: app/Providers/RouteServiceProvider.php
----------------------------------------------------------------------------------------------------------
FOUND 7 ERRORS AFFECTING 7 LINES
----------------------------------------------------------------------------------------------------------
2 | ERROR | [ ] Missing file doc comment
8 | ERROR | [ ] Missing doc comment for class RouteServiceProvider
55 | ERROR | [x] Object operator not indented correctly; expected 12 spaces but found 13
56 | ERROR | [x] Object operator not indented correctly; expected 12 spaces but found 13
69 | ERROR | [x] Object operator not indented correctly; expected 12 spaces but found 13
70 | ERROR | [x] Object operator not indented correctly; expected 12 spaces but found 13
71 | ERROR | [x] Object operator not indented correctly; expected 12 spaces but found 13
----------------------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 5 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------------------------------------------
PHP 코드 탐지기에는 몇 가지 문제를 자동으로 복구할 수 있는 phpcbf
도 포함되어 있습니다.$ phpcbf FILE_OR_DIR --report-full --standard=PEAR
PHPCBF RESULT SUMMARY
------------------------------------------------------------------------
FILE FIXED REMAINING
------------------------------------------------------------------------
app/Providers/RouteServiceProvider.php 5 2
app/Providers/BroadcastServiceProvider.php 3 5
app/Http/Middleware/Authenticate.php 1 4
app/Http/Middleware/RedirectIfAuthenticated.php 3 6
app/Http/Controllers/UserController.php 10 20
app/Http/Controllers/Auth/RegisterController.php 8 9
app/Services/UserService.php 9 22
app/Exceptions/Handler.php 3 7
app/Console/Kernel.php 2 4
------------------------------------------------------------------------
A TOTAL OF 44 ERRORS WERE FIXED IN 9 FILES
------------------------------------------------------------------------
Time: 201ms; Memory: 8MB
PHP 복사 스티커 검사기
PHP Copy Paste Detector(phpcpd)tin의 동작을 실행합니다: 프로젝트에서 중복 코드를 찾습니다.
중복된 코드는 일반적으로 재구성이 필요하다는 것을 나타낸다. 중복된 부분은 공유 라이브러리나 구성 요소에서 새로운 귀착점을 찾아야 한다.반복도 개발자에게 새총 수술을 강요한다. 한 번의 변경은 반드시 여러 번 반복해야 한다.
기본 용도:
$ phpcpd FILE_OR_DIR
우리는 phpcpd
이 오류로 간주되기 위해 몇 줄을 반복해야 하는지 알려줄 수 있습니다.$ phpcpd src --min-lines=40
phpcpd 4.1.0 by Sebastian Bergmann.
Found 1 clones with 45 duplicated lines in 2 files:
- src/Controller/PagesController.php:32-77 (45 lines)
src/Controller/Component/PermissionsComponent.php:9-54
1.14% duplicated lines out of 3950 total lines of code.
Average size of duplication is 45 lines, largest clone has 45 of lines
Time: 39 ms, Memory: 6.00MB
유닛 테스트: PHPUnit
단원 테스트는 우리의 실현이 설계의 목적을 실현시켰음을 확보한다.유닛은 클래스 메서드, 함수, API 호출과 같은 테스트 가능한 최소 코드 세그먼트입니다.
단원 테스트도 일종의 활성 문서로서 그들이 하는 일을 읽으면 테스트된 부분이 어떻게 작동하고 입력해야 하는지를 추측할 수 있다
그들이 어떤 행동을 취했는지, 어떤 생산량을 제공해야 하는지.그들도 이 점을 실증했다
재구성된 코드는 여전히 유효하다.
새 코드가 작성됨에 따라, 우리도 테스트를 만들어야 한다
그 행위를 검증하다.
PHPUnit은 PHP에서 가장 유행하는 테스트 프레임워크로 우리의 테스트 용례를 구동하는 데 사용된다.시작 자습서를 찾고 있는 경우 이 자습서를 통해 다음과 같은 이점을 얻을 수 있습니다.
phpunit
으로 전화하십시오.$ phpunit
PHPUnit 7.5.2 by Sebastian Bergmann and contributors.
..F. 4 / 4 (100%)
Time: 1.04 seconds, Memory: 18.00MB
There was 1 failure:
1) Tests\Unit\UserServiceTest::testItCanUpdateUser
Failed asserting that two strings are equal.
-------- Expected
+++ Actual
@@ @@
-'updated name'
+'updatedx name'
tests/Unit/UserServiceTest.php:45
FAILURES!
Tests: 4, Assertions: 8, Failures: 1.
브라우저 테스트: 라빌 황혼
PHPUnit의 가장 큰 문제는 바로 앞에서 JavaScript를 테스트할 수 없다는 점입니다.Dusk은 브라우저
실제 브라우저에서 응용 프로그램을 테스트함으로써 이 제한을 극복하는 자동화 도구입니다.
Dask는 진정한 Chrome 브라우저와 상호작용을 하여 웹 사이트를 프로그래밍 방식으로 조회하고 조작을 실행하며 요소를 선택하고 단언을 한다.
Dask를 사용하여 테스트를 수행하려면 Laravel의
artisan
도구를 사용하여 애플리케이션을 시작해야 합니다.$ php artisan serve &
$ php artisan dusk
PHPUnit 7.5.2 by Sebastian Bergmann and contributors.
F.. 3 / 3 (100%)
Time: 11.34 seconds, Memory: 20.00MB
There was 1 failure:
1) Tests\Browser\LoginTest::testUserCanLogIn
Did not see expected text [Welcome, Test Account] within element [body].
Failed asserting that false is true.
vendor/laravel/dusk/src/Concerns/MakesAssertions.php:173
vendor/laravel/dusk/src/Concerns/MakesAssertions.php:144
tests/Browser/LoginTest.php:33
vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:67
tests/Browser/LoginTest.php:34
FAILURES!
Tests: 3, Assertions: 4, Failures: 1.
보안 테스트: Sensiolabs
SensioLabs 보안 검사기를 사용하여 항목 종속성을 검색하여 알려진 취약점을 찾을 수 있습니다.의존 항목을 찾고 실행하기 위해 composer 파일을 스캔합니다
보안 취약점 database을 통해 제거:
$ php security-checker security:check ../composer.lock
Symfony Security Check Report
=============================
No packages have known vulnerabilities.
지속적인 통합: 신호량
지속적인 통합(CI)을 통해 초기 테스트 및 상시 테스트를 수행할 수 있습니다.
우리는 매번 전송할 때마다 프로그램을 만들 수 있다.이것
파이프는 모든 도구를 하나의 작업 흐름에 연결하고 테스트를 구동하며 응용 프로그램을 배치할 수 있습니다.
Semaphore은 클라우드 기반의 지속적인 통합 서비스로
git push
마다 테스트를 실행할 수 있도록 자동으로 확장할 수 있다.단일 구성 파일에서 다중 레벨 CI 파이핑을 설정할 수 있습니다.일련의 절차에서 파이프를 분리하는 목적은 더욱 빠른 피드백을 얻는 것이다.예를 들어, 만약 우리가 코드에서 근본적인 오류를 범한다면, 시간을 소모하는 고급 브라우저 테스트를 실행하는 것은 무의미하다.
처음부터 파이프를 설정하는 것을 피하기 위해서, 이 소스 항목을 갈라서 신호량에 추가할 수 있습니다.
신호량 시범 / 신호량 시범
PHP Laravel의 신호량으로 CI/CD 파이프 시연
PHP Laravel의 신호량으로 CI/CD 파이프 시연
예제 응용 프로그램 및 CI/CD 파이핑은 PHP Laravel 프로젝트를 실행하는 방법을 보여줍니다.
신호량 2.0에서
로컬 프로젝트 설정
로컬에서 프로젝트를 설정하려면 로컬 환경이 일반적인
Laravel
Documentation, 라벨 개발 요구에 따라
우리는 열쇠이기 때문에 유랑자와 택지를 사용할 것을 건의한다
모든 주요 운영 체제에서 이 솔루션을 지원합니다.
로컬 환경을 설정한 후 다음 명령을 실행할 수 있습니다.cp .env.example .env // and enter your DB details in the newly created .env
composer install
php artisan key:generate
php artisan migrate
신호량의 CI/CD
이 저장소를 분리하여 create a
project에 사용
웹 UI 또는 명령줄에서 다음을 수행합니다.curl https://storage.googleapis.com/sem-cli-releases/get.sh | bash
sem connect <semaphore-organization-link> <semaphore-id> // found in Semaphore Dashboard
cd <project directory>
sem init
그런 다음 워크플로우를 트리거하기 위해 저장소로 밀어넣기...
View on GitHub
CI 구성에 대한 단계별 지침은 read the article on Semaphore blog으로 문의하십시오.
쾌락의 빌딩!
Reference
이 문제에 관하여(PHP Laravel 개발자를 위한 지속적인 통합 도구 7개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/markoa/7-continuous-integration-tools-for-php-laravel-developers-2m28
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
cp .env.example .env // and enter your DB details in the newly created .env
composer install
php artisan key:generate
php artisan migrate
curl https://storage.googleapis.com/sem-cli-releases/get.sh | bash
sem connect <semaphore-organization-link> <semaphore-id> // found in Semaphore Dashboard
cd <project directory>
sem init
Reference
이 문제에 관하여(PHP Laravel 개발자를 위한 지속적인 통합 도구 7개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/markoa/7-continuous-integration-tools-for-php-laravel-developers-2m28텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)