PHPackages                             sadovnik/hexlet-psr-linter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. sadovnik/hexlet-psr-linter

ActiveLibrary[CLI &amp; Console](/categories/cli)

sadovnik/hexlet-psr-linter
==========================

0.1.0(9y ago)181PHP

Since Mar 23Pushed 9y ago1 watchersCompare

[ Source](https://github.com/sadovnik/hexlet-psr-linter)[ Packagist](https://packagist.org/packages/sadovnik/hexlet-psr-linter)[ RSS](/packages/sadovnik-hexlet-psr-linter/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependencies (9)Versions (2)Used By (0)

PSR linter
==========

[](#psr-linter)

[![Build Status](https://camo.githubusercontent.com/820b60d8b26a176345ef1a40a3e2a2c3c99ce0e40fade92f33ca723da7f78800/68747470733a2f2f7472617669732d63692e6f72672f7361646f766e696b2f6865786c65742d7073722d6c696e7465722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/sadovnik/hexlet-psr-linter)[![Code Climate](https://camo.githubusercontent.com/101d88ceca8cb4183704895edb92253842624912ad4613a46439d623d32ff4a0/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f7361646f766e696b2f6865786c65742d7073722d6c696e7465722f6261646765732f6770612e737667)](https://codeclimate.com/github/sadovnik/hexlet-psr-linter)[![Test Coverage](https://camo.githubusercontent.com/64361482bb7bdd8fd756701a9fdf249667585896823213c55622e4ad63655ff1/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f7361646f766e696b2f6865786c65742d7073722d6c696e7465722f6261646765732f636f7665726167652e737667)](https://codeclimate.com/github/sadovnik/hexlet-psr-linter/coverage)[![Issue Count](https://camo.githubusercontent.com/6856de8c69517fa1b7fb3aed7856f4cfb7b89dba3a37d094331f2c375d826475/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f7361646f766e696b2f6865786c65742d7073722d6c696e7465722f6261646765732f69737375655f636f756e742e737667)](https://codeclimate.com/github/sadovnik/hexlet-psr-linter)

[![hexlet-psr-linter screenshot](https://camo.githubusercontent.com/d63d73f3051ebd43cf402b5d71a0418b0bf37c86c4913a87f99e247cccbfebd9/68747470733a2f2f7777772e64726f70626f782e636f6d2f732f6a66397466633170763431337734662f53637265656e25323053686f74253230323031372d30332d3233253230617425323032302e30302e31392e706e673f646c3d31)](https://camo.githubusercontent.com/d63d73f3051ebd43cf402b5d71a0418b0bf37c86c4913a87f99e247cccbfebd9/68747470733a2f2f7777772e64726f70626f782e636f6d2f732f6a66397466633170763431337734662f53637265656e25323053686f74253230323031372d30332d3233253230617425323032302e30302e31392e706e673f646c3d31)

This is a linter for PHP with aim to implement all possible [PSR](http://www.php-fig.org/psr/) rules.

This project was originally started as part of [Hexlet](https://hexlet.io)'s traineeship, but actually developed a long time after. However the `hexlet-` prefix remains unchanged.

Thanks to [Roman Lakhtadyr](https://github.com/pldin601) for review. 🙏🏻

Installation
------------

[](#installation)

You can install the package globally:

```
composer global require sadovnik/hexlet-psr-linter

```

or locally:

```
composer require sadovnik/hexlet-psr-linter

```

If you're having trouble to run `psr-linter` after global install, make sure Composer's global binary dir is in the `$PATH`.

Usage
-----

[](#usage)

```
psr-linter [--fix] [--debug]
psr-linter (-h | --help)
psr-linter --version

```

### Example

[](#example)

```
psr-linter src/Symfony/Component/HttpKernel/Bundle/Bundle.php --fix

```

Roadmap
-------

[](#roadmap)

- Initiate boilerplate
- Function name rule
- Directory support
- Variable name rule
- «Either side-effects or definitions» rule
- Autofix using `--fix` flag
- JSON/YML output
- Make an interface for user rules
- Make a useful explanation of rules here in readme
- Make a friendly demo with cli usage
- Website with online linter

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3386d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5960795?v=4)[Cyril Sadovnik](/maintainers/sadovnik)[@sadovnik](https://github.com/sadovnik)

---

Top Contributors

[![sadovnik](https://avatars.githubusercontent.com/u/5960795?v=4)](https://github.com/sadovnik "sadovnik (46 commits)")[![v-kolesnikov](https://avatars.githubusercontent.com/u/6506296?v=4)](https://github.com/v-kolesnikov "v-kolesnikov (1 commits)")

---

Tags

clilinterphppsr

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/sadovnik-hexlet-psr-linter/health.svg)

```
[![Health](https://phpackages.com/badges/sadovnik-hexlet-psr-linter/health.svg)](https://phpackages.com/packages/sadovnik-hexlet-psr-linter)
```

###  Alternatives

[getkirby/cli

Kirby command line interface

6576.7k39](/packages/getkirby-cli)[shopware/psh

A build tool written in PHP utilizing sh scripts

6131.7k](/packages/shopware-psh)[soy-php/soy

PHP task runner focused on clean syntax and allowing flexible implementation

6512.1k10](/packages/soy-php-soy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
