PHPackages                             chartjes/tricorder - 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. chartjes/tricorder

ActiveLibrary

chartjes/tricorder
==================

description\_text

8365PHPCI failing

Since Mar 31Pushed 11y ago6 watchersCompare

[ Source](https://github.com/chartjes/php-tricorder)[ Packagist](https://packagist.org/packages/chartjes/tricorder)[ RSS](/packages/chartjes-tricorder/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

[![PHP-Tricorder logo](https://camo.githubusercontent.com/284bb8d3deacad4297b41d4286377ea8ef5e3b71db8b1ab16dccd6c6c47cc4a4/687474703a2f2f6772756d70792d74657374696e672e636f6d2f547269636f726465725f746578742e706e67)](https://camo.githubusercontent.com/284bb8d3deacad4297b41d4286377ea8ef5e3b71db8b1ab16dccd6c6c47cc4a4/687474703a2f2f6772756d70792d74657374696e672e636f6d2f547269636f726465725f746578742e706e67)

(Logo generously created by [Jacques Woodcock](https://twitter.com/jacques_thekit))

PHP-Tricorder is a CLI utility that scans structure files created using [phpDocumentor](http://phpdoc.org)and offers suggestions on potential problems with your code along with testing strategy information.

Executing `/path/to/php tricorder.php` will give you some usage information.

Please read the file LICENSE included with this code for licensing details.

How To Use It
-------------

[](#how-to-use-it)

- Install [phpDocumentor](http://phpdoc.org) using your preferred method
- Use docblocks to describe the parameters and return types for your methods
- To generate a structure.xml document for an entire directory recursively, use `phpdoc parse -d . -t`
- To generate a structure.xml document for a specific file, use `phpdoc parse -f /path/to.file -t`
- Install the dependencies using [Composer](http://getcomposer.org/) `/path/to/php composer.phar install`
- Process the structure.xml document using tricorder: `/path/to/php tricorder.php /path/to/structure.xml`

Tricorder will then give you some suggestions on things to look for when testing your classes. Here's some sample output:

```
chartjes@php-vm:~/php-tricorder$ php tricorder.php ../building-testable-applications/lib/IBL/structure.xml
Reading in phpDocumentor structure file...

FranchiseMapper.php

Scanning FranchiseMapper

__construct -- mock $conn as \PDO

createFranchiseFromRow -- test $row using an empty array()

delete -- mock $franchise as \IBL\Franchise

findAll -- test method returns \IBL\Franchise instances
findByConference -- test $conference using null or empty strings

findByConferenceDivision -- test $conference using null or empty strings

findByNickname -- test $nickname using null or empty strings

findById -- test $id using non-integer values

generateMap -- test $teamsTable using null or empty strings

save -- mock $franchise as \IBL\Franchise

_insert -- non-public methods are difficult to test in isolation
_insert -- mock $franchise as \IBL\Franchise

_update -- non-public methods are difficult to test in isolation
_update -- mock $franchise as \IBL\Franchise

\IBL\Franchise might need to be injected for testing purposes
\Exception might need to be injected for testing purposes
\Exception might need to be injected for testing purposes
\Exception might need to be injected for testing purposes
\Exception might need to be injected for testing purposes
\Exception might need to be injected for testing purposes

```

Feel free to hit me up on [Twitter](https://twitter.com/grmpyprogrammer) and pull requests to make the tool better are always welcome.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

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

### Community

Maintainers

![](https://www.gravatar.com/avatar/2135f53c7ec5e7761853921129e011cb4219e29c0937f19f87346df8e9759237?d=identicon)[chartjes](/maintainers/chartjes)

---

Top Contributors

[![chartjes](https://avatars.githubusercontent.com/u/28321?v=4)](https://github.com/chartjes "chartjes (39 commits)")[![yvoyer](https://avatars.githubusercontent.com/u/1745744?v=4)](https://github.com/yvoyer "yvoyer (36 commits)")[![gms8994](https://avatars.githubusercontent.com/u/50712?v=4)](https://github.com/gms8994 "gms8994 (2 commits)")[![dshafik](https://avatars.githubusercontent.com/u/58074?v=4)](https://github.com/dshafik "dshafik (1 commits)")

### Embed Badge

![Health badge](/badges/chartjes-tricorder/health.svg)

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

PHPackages © 2026

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