>  기사  >  백엔드 개발  >  PHP_CodeSniffer를 사용하여 코드 사양을 확인하는 방법(자세한 설명)

PHP_CodeSniffer를 사용하여 코드 사양을 확인하는 방법(자세한 설명)

青灯夜游
青灯夜游앞으로
2020-06-28 09:54:333496검색

PHP_CodeSniffer를 사용하여 코드 사양을 확인하는 방법(자세한 설명)

이 내용을 들어보지 못한 학생들도 있을 수 있습니다. 간략한 소개는 다음과 같습니다.

PHP_CodeSniffer는 코드 스타일 감지 도구입니다. 여기에는 phpcsphpcbf(GitHub 주소)라는 두 가지 유형의 스크립트가 포함되어 있습니다. PHP_CodeSniffer 是一个代码风格检测工具。它包含两类脚本,phpcsphpcbf(GitHub地址)。

phpcs 脚本对 PHPJavaScriptCSS 文件定义了一系列的代码规范(通常使用官方的代码规范标准,比如 PHPPSR2),能够检测出不符合代码规范的代码并发出警告或报错(可设置报错等级)。

phpcbf 脚本能自动修正代码格式上不符合规范的部分。比如 PSR2 规范中对每一个 PHP 文件的结尾都需要有一行空行,那么运行这个脚本后就能自动在结尾处加上一行空行。

安装

推荐使用 composer 来安装:

composer global require "squizlabs/php_codesniffer=*"

安装完后就会在全局的 Vendor 目录下的 bin 中生成两个软链接:

phpcbf -> ../squizlabs/php_codesniffer/bin/phpcbf
phpcs -> ../squizlabs/php_codesniffer/bin/phpcs

如果你不知道全局 Vendor 目录在哪,用下这个命令吧:

composer global config bin-dir --absolute

命令行使用

到这一步,其实你就可以愉快的使用这两个命令了:

哦,不过如果要全局使用这两个命令那还是做个软链接放在 /usr/local/bin 下吧~

$ phpcs test.php

FILE: /Users/stephen/Develop/Code/test.php
--------------------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 2 LINES
--------------------------------------------------------------------------------------------
 2 | ERROR | [ ] Missing file doc comment
 3 | ERROR | [x] TRUE, FALSE and NULL must be lowercase; expected "false" but found "FALSE"
--------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------------------

Time: 45ms; Memory: 4Mb

$ phpcbf test.php

PHPCBF RESULT SUMMARY
----------------------------------------------------------------------
FILE                                                  FIXED  REMAINING
----------------------------------------------------------------------
/Users/stephen/Develop/Code/test.php                  1      1
----------------------------------------------------------------------
A TOTAL OF 1 ERROR WERE FIXED IN 1 FILE
----------------------------------------------------------------------

Time: 49ms; Memory: 4Mb

Sublime Text 中集成

安装插件

前提 Package Control 要安装好,这个你肯定没问题的(莫名的自信,逃)

安装 phpcs 这个插件,然后打开这个插件的 Settings - UserSettings - Default,将后者的内容全部复制到前者。

配置插件

将以下这几个配置项配置一下:

当前环境中 php 的执行路径

"phpcs_php_prefix_path": "/usr/bin/php",

当前环境中 phpcs 的执行路径

"phpcs_executable_path": "~/.composer/vendor/bin/phpcs",

执行脚本时额外添加的参数,一般以 PSR2 代码规范作为标准,你也可以选择 PSR1PEAR

"phpcs_additional_args": {
    "--standard": "PSR2",
    "-n": ""
},

当前环境中 phpcbf 的执行路径

"phpcbf_executable_path": "/Users/stephen/.composer/vendor/bin/phpcbf",

开启保存就执行 cbf 脚本功能

"phpcbf_on_save": true,

现在就可以愉快的玩耍了,编辑完 .php 后缀的文件保存后就会自动回复修正代码不规范的地方。

这个插件还有其他代码规范可以设置的地方,比如 PHP Mess Detector settingsPHP Linter settingsPHP Scheck settings

下次在研究其他几个,目前是够我用了,逃)

PhpStrom 中集成

配置 Code Sniffer

在 Settings -> Languages & Frameworks -> PHP -> Code Sniffer 中对 phpcs 进行配置

点击 Configuration: Local 旁边的 ...,将当前环境的 phpcs 执行脚本所在路径配置进去,旁边有一个 Validate 按钮可以进行验证,其他两个参数默认就好,这里也稍微说一下吧。

Maxumum number of messages per file[1...100]:每个文件最多显示不符合代码规范的条数,一般出现50个了那你有很多工作可以做了,其实10个就够了,尤其对我这种代码洁癖和强迫症晚期的人来说一个足矣  。。。

Tool process timeout, sec[1...30]:脚本执行的超时时间

开启验证

在 Settings -> Editor -> Inspections 中进行开启

找到 PHP -> PHP Code Sniffer validation 选项,对其打钩,在右侧进行详细配置

我是将 Options -> Show warnings as: Error 开启了,当然你也可以选择 Warnning,提示级别高一点能够强迫自己,没啥不好的吧~

Coding standard 依旧是选择 PSR2,如果找不到这个选项,记得点一下紧挨着的刷新按钮。

自动修复

我找了半天没发现 PhpStrom 有支持 phpcbf 的可用选项,所以只能通过 External Tools

phpcs 스크립트는 PHP, JavaScriptCSS 파일에 대한 일련의 코드 사양을 정의합니다(보통 공식 사용). PHPPSR2)와 같은 코드 사양 표준은 코드 사양을 준수하지 않는 코드를 감지하고 경고 또는 오류를 발행할 수 있습니다(오류 수준 설정 가능).

phpcbf 스크립트는 표준을 준수하지 않는 코드 형식의 부분을 자동으로 수정할 수 있습니다. 예를 들어, PSR2 사양에서는 각 PHP 파일 끝에 빈 줄이 필요합니다. 그런 다음 이 스크립트를 실행하면 끝에 빈 줄이 자동으로 추가됩니다. 설치rrreeerrreee전역 Vendor 디렉토리가 어디에 있는지 모르는 경우 rrreee명령줄 사용법rrreeeSublime Text에 통합phpcs 플러그인을 설치한 다음 플러그인의 설정 - 사용자 및 설정 - 기본값 code>, 후자의 모든 내용을 전자에 복사합니다. 현재 환경의 php 실행 경로rrreeerrreeerrreee현재 환경의 phpcbf 실행 경로rrreee
composer를 사용하여 설치하는 것이 좋습니다: 설치 후 , 전역 Vendor 디렉토리 아래 bin에 두 개의 소프트 링크를 생성합니다.
이 시점에서 실제로 이 두 가지를 사용할 수 있습니다. happy command: 아, 하지만 이 두 명령을 전역적으로 사용하려면 소프트 링크를 만들어 /usr/local/bin에 넣어야 합니다~
설치 플러그인 전제 조건 Package Control이 필요합니다. 설치되시면 괜찮을 것 같아요(설명할 수 없을 정도로 자신감이 있어서 도망가세요)
구성 플러그인 다음 구성 항목을 구성합니다.
phpcs의 실행 경로스크립트 실행 시 추가되는 추가 매개변수는 일반적으로 PSR2 코드 사양을 기준으로 하며, PSR1을 선택할 수도 있습니다. PEAR 잠깐
저장을 열고 cbf 스크립트 함수를 실행🎜rrreee🎜 이제 즐겁게 플레이하실 수 있습니다. 편집 .php 접미사를 붙여 파일을 저장하신 후 자동으로 코드의 불규칙성을 수정하라는 응답을 보내드립니다. 🎜🎜이 플러그인에는 PHP Mess Detector 설정, PHP Linter 설정, PHP Scheck 설정과 같은 코드 사양을 설정할 수 있는 다른 위치도 있습니다. code>🎜🎜 다음에 몇 가지 더 공부하겠지만 지금은 이것으로 충분합니다. 탈출)🎜🎜PhpStrom에 통합 span>🎜🎜코드 스니퍼 구성🎜🎜설정 -> 언어 ​​& 프레임워크 -> 코드 스니퍼🎜🎜를 클릭하세요. 구성: 로컬 ... 옆 code>, 현재 환경에서 phpcs 실행 스크립트의 경로를 구성합니다. Validate가 있습니다. 확인을 위해 옆에 있는 > 버튼을 클릭하세요. 다른 두 매개변수는 기본적으로 괜찮으므로 여기서는 이에 대해 조금 이야기하겠습니다. 🎜🎜파일당 최대 메시지 수[1...100]: 각 파일은 코드 사양을 따르지 않는 최대 메시지 수를 표시합니다. 일반적으로 50개의 메시지가 나타나면 사실, 10개이면 충분합니다. 특히 나처럼 코드에 집착하고 강박 장애의 후기 단계에 있는 사람에게는 1개이면 충분합니다. . . 🎜🎜도구 프로세스 시간 초과, 초[1...30]: 스크립트 실행 시간 초과🎜🎜확인 활성화🎜🎜설정 -> 🎜🎜PHP -> PHP 코드 스니퍼 유효성 검사 옵션을 찾아 확인하고 오른쪽에서 자세히 구성합니다. 🎜🎜옵션 -> 경고 표시: 오류를 선택할 수도 있습니다. 경고. 프롬프트 수준을 높여도 문제가 없습니다~🎜🎜코딩 표준 그래도 이 옵션을 찾을 수 없으면 옆에 있는 새로 고침 버튼을 클릭하세요. 🎜🎜자동 복구🎜🎜오랜 시간 동안 검색했지만 PhpStromphpcbf를 지원하는 사용 가능한 옵션이 있다는 것을 찾을 수 없었습니다. 이를 달성하려면 외부 도구만 사용할 수 있습니다. 🎜🎜설정 -> 도구 -> 외부 도구에 추가하세요. 아래는 기본적으로 복사할 수 있는 예입니다. 🎜 🎜description 🎜🎜automically 올바른 코딩 표준 위반.

이제 메뉴바의 도구 -> 외부 도구에서 찾아 즐겁게 사용하실 수 있습니다.

량 형제님, 정말 불편해요. . .

그런 다음 단축키를 추가하세요. . .

설정 -> 키맵 -> 외부 도구 -> phpcbf에서 단축키를 추가하세요. 제가 설정한 것은 Option + F 또는 Windows의 경우 Alt + FOption + F,或者 Windows 上的 Alt + F

蜜汁延伸

之前没用 phpcbf,代码自动修复使用的是 php-cs-fixer,但后来发现两者功能差不多,所以秉着能少一个包就少一个包的原则,放弃了 php-cs-fixer

Honey Extension

이전에 phpcbf를 사용하지 않았는데 코드가 자동으로 복구됩니다. php-cs-fixer를 사용하다가 나중에 둘의 기능이 비슷하다는 걸 발견하고 하나 덜한다는 원칙에 따라 php-cs-fixer를 포기했습니다. 패키지.

관심이 있으시면 스스로 지식을 확장하실 수 있습니다~

추천: "🎜PHP 비디오 튜토리얼🎜"🎜

위 내용은 PHP_CodeSniffer를 사용하여 코드 사양을 확인하는 방법(자세한 설명)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제