matthiasnoback/code-sniffer-sniff-dsl
Composer 安装命令:
composer require matthiasnoback/code-sniffer-sniff-dsl
包简介
DSL for writing sniffs for PHP_CodeSniffer
README 文档
README
Using this library you can easily write code sniffs for PHP_CodeSniffer. When you don't use this DSL you will find yourself writing lots of specific, never reusable code.
Example
Say you want to create a code sniff that triggers an error if a PHP file contains an (auto-generated) doc comment at the top (this is called a "file comment"). You should first create a "matcher" for this specific situation:
<?php namespace Matthias\PhpCodingStandard\Sniffs\Commenting; use Matthias\Codesniffer\MatcherInterface; use Matthias\Codesniffer\Sequence\SequenceBuilder; class FileCommentMatcher implements MatcherInterface { public function matches(array $tokens, $tokenIndex) { $forwardSequence = SequenceBuilder::create() ->lookingForward() ->expect() ->token(T_WHITESPACE, ' ') // space ->token(T_STRING) // namespace root ->quantity() // sub namespaces ->any() ->succeeding() ->token(T_NS_SEPARATOR) ->token(T_STRING) ->end() ->end() ->token(T_SEMICOLON) // end of namespace declaration ->quantity() // two blank lines ->exactly(2) ->token(T_WHITESPACE, "\n") ->end() ->end() ->build(); $backwardSequence = SequenceBuilder::create() ->lookingBackward() ->expect() ->quantity() // the first new line is part of the PHP open tag ->exactly(1) ->token(T_WHITESPACE, "\n") ->end() ->end() ->build(); $oneBlankLineAfterNamespace = $forwardSequence->matches($tokens, $tokenIndex); $oneBlankLineBeforeNamespace = $backwardSequence->matches($tokens, $tokenIndex); return $oneBlankLineBeforeNamespace && $oneBlankLineAfterNamespace; } }
Next the actual sniff class is pretty simple:
<?php use Matthias\PhpCodingStandard\Sniffs\Commenting\FileCommentMatcher; class PhpCodingStandard_Sniffs_Commenting_NoFileCommentForClassSniff implements \PHP_CodeSniffer_Sniff { public function register() { // this sniff will be triggered when the code sniffer encounters a T_DOC_COMMENT token return array( T_DOC_COMMENT ); } public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { $tokens = $phpcsFile->getTokens(); // create the matcher $matcher = new FileCommentMatcher(); // use the matcher to determine if the current token is a file comment if ($matcher->matches($tokens, $stackPtr)) { $phpcsFile->addError('File should not have a file comment', $stackPtr); } } }
matthiasnoback/code-sniffer-sniff-dsl 适用场景与选型建议
matthiasnoback/code-sniffer-sniff-dsl 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.04k 次下载、GitHub Stars 达 10, 最近一次更新时间为 2014 年 03 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「DSL」 「Coding Standard」 「code sniffer」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 matthiasnoback/code-sniffer-sniff-dsl 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 matthiasnoback/code-sniffer-sniff-dsl 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 matthiasnoback/code-sniffer-sniff-dsl 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Feature complete, object oriented, composable, extendable Elasticsearch query DSL builder for PHP.
Adds the EDTF data type to Wikibase
Vanio Coding Standard Ruleset for PHP_CodeSniffer.
Elasticsearch DSL library
CodeSniffer ruleset for the ZettaCMS coding standard
Expression executor, which allow to implement domain-specific language
统计信息
- 总下载量: 3.04k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 10
- 点击次数: 13
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2014-03-19