PHPackages                             lavary/fixit - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. lavary/fixit

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

lavary/fixit
============

Track your Fixme comments real quick with just a command!

v1.1.3(9y ago)686MITPHP

Since Sep 27Pushed 9y ago2 watchersCompare

[ Source](https://github.com/lavary/fixit)[ Packagist](https://packagist.org/packages/lavary/fixit)[ Docs](https://github.com/lavary/fixit)[ RSS](/packages/lavary-fixit/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (5)Dependencies (5)Versions (6)Used By (0)

\#Fixit

[![Version](https://camo.githubusercontent.com/82e7ba8d4afe1bbf300ae9eced62ed27ef4cfaead19579cebf5eed73a08e844e/687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6c61766172792f66697869742e7376673f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/82e7ba8d4afe1bbf300ae9eced62ed27ef4cfaead19579cebf5eed73a08e844e/687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6c61766172792f66697869742e7376673f7374796c653d666c61742d737175617265)

Track your "Fixme" comments real quick with just a command!

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

[](#installation)

```
composer global require lavary/fixit
```

After the package is installed, a command-line utility named `fixit` is copied to your `~/.composer/vendor/bin` directory, if installed globally.

To make sure the command is available from anywhere, make sure `~/.composer/vendor/bin` is added to your `PATH` environment variable. Otherwise, you'll have to use the full path to the command.

> You can also install it for a specific project; In that case, it is copied to the `vendor/bin` directory of the project.

To see the available arguments and options, you may run the following command:

```
fixit --help
```

Usage
-----

[](#usage)

Fixit tracks and collects all the comments in specified files marked with certain keywords set in the configuration file or as command options.

Comments can be in the following form across the code base. However, it can be configured in the configuration file.

```
 // KEYWORD some description about it
```

Here's a basic usage:

```
fixit scan --include /Path/to/your/code
```

By default, comments starting with keywords `fixme`, `fix-me`, `todo`, `to-do` are collected by the collector. However, this can be configured in the configuration file (More on this below) or the command option `--keyword`:

```
fixit scan --include /Path/to/your/code --keyword fixme --keyword warning
```

As you can see, it is possible to specify several keywords at the same time.

The output could be something like:

```
 - File:/Path/to/CodeBase/src/Controller/AdminControllerProvider.php

Line  Type        Comment
37    fixme       some thing wrong here
450   warning     This part should be improved

-File:/Path/to/CodeBase/src/Controller/UserControllerProvider.php

Line Type        Comment
59   fixme       This block should be refactored soon

187 file(s) scanned.
 3 issue(s) were found in 2 file(s).
```

> **Note:** If you choose one keyword for a certain issue (fixme, bug, bottleneck, etc), just stick to it to make sure no comment remain untracked.

Output Types
------------

[](#output-types)

By default, the output is rendered in a tabular format. However, you can specify the output by `output_type` option in the command line or the configuration file. Three types are supported out of the box: `table`, `json`, and `list`.

```
vendor/bin/fixit scan include /Path/to/your/codebase --output_type json
```

Which outputs:

```
[
   {
      "file":"/Path/to/Codebase/src/AdminControllerProvider.php",
      "items":[
         {
            "line":"37",
            "type":"warning",
            "comment":"some thing wrong here"
         }
      ]
   },
   {
      "file":"/Path/to/Codebase/src/UserController.php",
      "items":[
         {
            "line":"59",
            "type":"warning",
            "comment":"another one here"
         }
      ]
   }
]
```

Or as a list:

```
vendor/bin/fixit scan --include /Path/to/your/codebase --output_type list
```

```
 - File:/Path/to/Codebase/src/Controller/AdminControllerProvider.php
 * 37 warning some thing wrong here
 * 59 warning This part should be improved

 - File:/Path/to/Codebase/src/FormApply/Controller/UserController.php
 * 59 warning another one here

187 file(s) scanned.
 2 issue(s) were found in 2 file(s).
```

Include or Exclude Certain Directories or Files
-----------------------------------------------

[](#include-or-exclude-certain-directories-or-files)

It is possible to limit the collection to a limited number of directories or files (inside those directories).

To do this, you can use `--include`, `--exclude`, `--include_file`, and `--exclude_file` command options.

```
fixit scan --include path/to/code  --exclude Controller --exclude Model
```

The above command will scan all the files and directories inside `path/to/code` directory except for `Controller` and `Model` directories.

We can also exclude a certain file:

```
fixit scan --include path/to/code  --exclude Controller --exclude_file Models/User.php
```

The above command will scan all files inside `path/to/code` directory except for `Controller` directory and `Model/User.php` file.

You can use these options as many time as required, to specify the desired directories and files to scan.

> By default `vendor` directory is ignored.

All these options can also bet set in the configuration file.

Configuration
-------------

[](#configuration)

All the options mentioned above can be set via a `YAML` configuration file, which is shipped with the package.

The configuration file looks like this:

```
# Fixit configuration

keyword: ['fixme', 'fix-me', 'todo', 'to-do']

pattern: '\/\/\s*@?(%keyword%):?\s+(.+)'
titles:  ['Line', 'Type', 'Comment']

include: ~
exclude: ['vendor']
include_file: ~
exclude_file: ~

output_type: table
```

The option `keyword` is the list of keywords we need to fetch from the files while scanning. You can put any keyword based on your team's conventions.

The `pattern` and `titles` will be covered in the `Advanced Usage` section of this `README` file.

The next set of options is very straightforward as we've already used them on the command line. the options `include`, `exclude`, `include_dir`, `exclude_dir` all accept an array as value:

```
# ...

include: ['/Path/to/Code/Model', 'Path/to/Code/Controller']
include_file: ['User.php', 'UserController.php']

# ...
```

The option `output_type` specifies the render type which can be `table`, `json`, or `list`.

> **Note** All these settings are overridden by their command option counterpart

### Editing the Configuration File

[](#editing-the-configuration-file)

To use your own configuration file you need to make a copy of your own.

To make a copy run the following command:

```
fixit config:publish

Please input the destination directory
```

You need to specify the path you want to keep the configuration file. It can be anywhere in your system. Finally, you can go to the specified directory to edit the settings as desired.

To use the configuration file just pass it to `fixit scan` command via `--configuration` option:

```
fixit scan --configuration path/to/config.yml
```

Advanced Usage
--------------

[](#advanced-usage)

As you probably remember from the configuration file, there are to more options that you can use if the current settings do not fulfill your requirements. For example, if you want to have more complex comment structures for tracking your "todo" comments, you can change the `pattern` and `titles` options accordingly.

`titles` specifies the column titles when showing the results.

If You Need Help
----------------

[](#if-you-need-help)

Please submit all issues and questions using GitHub issues and I will try to help you.

License
-------

[](#license)

Fixit is free software distributed under the terms of the MIT license.

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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

Every ~2 days

Total

5

Last Release

3554d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/4816516?v=4)[Reza Lavarian](/maintainers/lavary)[@lavary](https://github.com/lavary)

---

Top Contributors

[![lavary](https://avatars.githubusercontent.com/u/4816516?v=4)](https://github.com/lavary "lavary (13 commits)")

---

Tags

fixme finderfixme collectorissue collectorTechnical debt locatorTo-do finderTo-do locator

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lavary-fixit/health.svg)

```
[![Health](https://phpackages.com/badges/lavary-fixit/health.svg)](https://phpackages.com/packages/lavary-fixit)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k45](/packages/friendsoftypo3-content-blocks)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[jolicode/castor

A lightweight and modern task runner. Automate everything. In PHP.

54642.4k4](/packages/jolicode-castor)[aeliot/todo-registrar

Register TODOs from source code in issue tracker

153.0k](/packages/aeliot-todo-registrar)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9417.2k58](/packages/open-dxp-opendxp)[perplorm/perpl

Perpl is an improved and still maintained fork of Propel2, an open-source Object-Relational Mapping (ORM) for PHP.

249.4k](/packages/perplorm-perpl)

PHPackages © 2026

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