承接 sjparkinson/static-review 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sjparkinson/static-review

最新稳定版本:5.2.2

Composer 安装命令:

composer require sjparkinson/static-review

包简介

An extendable framework for version control hooks.

README 文档

README

This package is abandoned ????.

See GrumPHP for a maintained alternative.

An extendable framework for version control hooks.

StaticReview Success Demo

Usage

For a composer managed project you can simply run the following ...

$ composer require sjparkinson/static-review

Hooks can then be installed like so ...

$ vendor/bin/static-review.php hook:install vendor/sjparkinson/static-review/hooks/example-pre-commit.php .git/hooks/pre-commit

Otherwise, if you don't use composer ...

$ git clone https://github.com/sjparkinson/static-review.git $ cd static-review/ $ composer install --no-dev --optimize-autoloader $ bin/static-review.php hook:install hooks/example-pre-commit.php ~/.../.git/hooks/pre-commit

Global Installation and Usage

The hooks can also be used for any project if you install static-review globally:

$ composer g require sjparkinson/static-review

Then, just install the hooks as you would normally but reference the global installation path:

$ static-review.php hook:install ~/.composer/vendor/sjparkinson/static-review/hooks/static-review-commit-msg.php .git/hooks/commit-msg

This assumes you have set up global composer paths.

Example Hooks

Static Review can be used for both files and commit message review. Below are basic hooks for each.

For Files

#!/usr/bin/env php <?php include __DIR__ . '/../../../autoload.php'; // Reference the required classes. use StaticReview\StaticReview; use StaticReview\Review\General\LineEndingsReview; [...] $reporter = new Reporter(); $review = new StaticReview($reporter); // Add any reviews to the StaticReview instance, supports a fluent interface. $review->addReview(new LineEndingsReview()); $git = new GitVersionControl(); // Review the staged files. $review->files($git->getStagedFiles()); // Check if any issues were found. // Exit with a non-zero status to block the commit. ($reporter->hasIssues()) ? exit(1) : exit(0);

For Commit Messages

#!/usr/bin/env php <?php include __DIR__ . '/../../../autoload.php'; // Reference the required classes. use StaticReview\StaticReview; use StaticReview\Review\Message\BodyLineLengthReview; [...] $reporter = new Reporter(); $review = new StaticReview($reporter); // Add any reviews to the StaticReview instance, supports a fluent interface. $review->addReview(new BodyLineLengthReview()); $git = new GitVersionControl(); // Review the current commit message. // The hook is passed the file holding the commit message as the first argument. $review->message($git->getCommitMessage($argv[1])); // Check if any issues were found. // Exit with a non-zero status to block the commit. ($reporter->hasIssues()) ? exit(1) : exit(0);

Example Review For Files

class NoCommitTagReview extends AbstractFileReview { // Review any text based file. public function canReviewFile(FileInterface $file) { $mime = $file->getMimeType(); // check to see if the mime-type starts with 'text' return (substr($mime, 0, 4) === 'text'); } // Checks if the file contains `NOCOMMIT`. public function review(ReporterInterface $reporter, ReviewableInterface $file) { $cmd = sprintf('grep --fixed-strings --ignore-case --quiet "NOCOMMIT" %s', $file->getFullPath()); $process = $this->getProcess($cmd); $process->run(); if ($process->isSuccessful()) { $message = 'A NOCOMMIT tag was found'; $reporter->error($message, $this, $file); } } }

Example Review For Messages

class WorkInProgressReview extends AbstractMessageReview { // Check if the commit message contains "wip" public function review(ReporterInterface $reporter, ReviewableInterface $commit) { $fulltext = $commit->getSubject() . PHP_EOL . $commit->getBody(); if (preg_match('/\bwip\b/i', $fulltext)) { $message = 'Do not commit WIP to shared branches'; $reporter->error($message, $this, $commit); } } }

Unit Tests

See vagrantup.com and phpunit.de.

$ git clone https://github.com/sjparkinson/static-review.git $ cd static-review/ $ vagrant up $ vagrant ssh ... $ cd /srv $ composer update $ composer test

Licence

The content of this library is released under the MIT License by Samuel Parkinson.

统计信息

  • 总下载量: 3.23M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 328
  • 点击次数: 1
  • 依赖项目数: 33
  • 推荐数: 0

GitHub 信息

  • Stars: 326
  • Watchers: 15
  • Forks: 26
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固