Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/juampi92/phecks
PHP Checks
https://github.com/juampi92/phecks
ci-cd laravel phecks php testing
Last synced: 9 days ago
JSON representation
PHP Checks
- Host: GitHub
- URL: https://github.com/juampi92/phecks
- Owner: juampi92
- License: mit
- Created: 2022-06-26T13:51:06.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-27T20:48:23.000Z (9 months ago)
- Last Synced: 2024-08-09T02:55:02.709Z (3 months ago)
- Topics: ci-cd, laravel, phecks, php, testing
- Language: PHP
- Homepage: https://juampi92.gitbook.io/phecks/
- Size: 141 KB
- Stars: 4
- Watchers: 2
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Phecks
---
Phecks (stands for PHP-Checks) is a custom Check Runner. It will run custom checks in your codebase and will make a report of violations that need fixing.
## What is it for?
- For big teams to align on a styleguide beyond linting.
- Used as an extra set of eyes during the Code Review.
- Teams make their own checks according to their architectural decisions and styleguides.[See what checks are for](https://juanpablo2.gitbook.io/phecks/about-phecks/what-is-a-check).
On its own, Phecks doesn't contain any checks.
You and your team are responsible for defining and implementing these checks based on your architectural decisions.Phecks will provide you with a structure to develop and run these checks easily.
## Installation
You can install the package via composer:
```bash
composer require juampi92/phecks --dev
```Read the full installation instructions in the [documentation](https://juanpablo2.gitbook.io/phecks/).
## Usage
Create a Check to make sure your team's architectural decisions are respected:
```php
/**
* @implements Check
*/
class ConsoleClassesMustBeSuffixedWithCommandCheck implements Check
{
public function __construct(
private readonly ClassSource $source,
) {}/**
* This method will get all the possible matches.
*/
public function getMatches(): MatchCollection
{
return $this->source
->directory('./app/Console')
->run()
->reject(fn (ReflectionClass $class): bool => $class->isAbstract())
->pipe(new WhereExtendsClassFilter(\Illuminate\Console\Command::class));
}/**
* processMatch will check if the matches are
* actual violations, and format them properly.
*/
public function processMatch($match, FileMatch $file): array
{
if (Str::endsWith($match->getName(), 'Command')) {
return [];
}return [
ViolationBuilder::make()->message('Command classes must be suffixed with \'Command\''),
];
}
}
```Add the class in the config `phecks.checks`
And run the following:
```bash
php artisan phecks:run
```![error-output](docs/error-output.png)
## Testing
```bash
composer test
```## Credits
- [juampi92](https://github.com/juampi92)
- [All Contributors](../../contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.