2017 © Pedro Peláez
 

library inspector

Inspect the your app's data, config and user input for issues

image

inspector/inspector

Inspect the your app's data, config and user input for issues

  • Tuesday, March 3, 2015
  • by joostfaassen
  • Repository
  • 1 Watchers
  • 4 Stars
  • 78 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

Scrutinizer Code Quality, (*1)

Inspector

Inspect your app's data, config and user input for issues., (*2)

Use-cases

  • Test customer databases for configuration issues
  • Test customer databases for inconsistencies / invalid data
  • Validate user input (find invalid email addresses, phonenrs, etc)
  • ... etc etc

The framework lets you write 'Inspections' for any type of data, and raise 'Issues' when needed., (*3)

The issues contain (translatable) user-level error messages, proposed solutions, and hyperlinks to fix the issue., (*4)

Installation

It is recommended to use composer to install Inspector:, (*5)

composer require inspector/inspector "~1.0"

Alternatively you can add the following to the require section in your composer.json manually:, (*6)

"inspector/inspector": "~1.0"

Run composer update afterwards., (*7)

How to use Inspector

Create an Inspection class

You can create a new Inspection class for each type of data that you want to inspect. For example a UserInspector, (*8)

namespace Acme\Inspector\Inspection;

use Inspector\Inspection\InspectionInterface
use Acme\Inspector\Issue\UserWithoutPasswordIssue;
use PDO;

// As a convention, end the classname with "Inspection"
class UserInspection
{
    private $pdo;

    // Request dependencies from the container
    public function __construct(PDO $pdo)
    {
        $this->pdo = $pdo;
    }

    // The inspector will run all methods starting with `inspect`
    public function inspectPasswords(InspectionInterface $inspection)
    {
        // Query for users without a password
        $res = $pdo->queryForUsersWithoutPasswords();

        // Loop through the results
        foreach ($res as $row) {
            // Instantiate a new issue for each user without a password
            $issue = new UserWithoutPasswordIssue($inspection);

            // Attach arbitrary data to the issue for later usage in the templates
            $issue->setData('username', $row['username']);
            $issue->setData('userid', $row['id']);

            // Add this new issue to the inspection
            $inspection->addIssue($issue);
        }
    }
}

Create an Issue class

Each issue is described in it's own class, in this case UserWithoutPasswordIssue:, (*9)


namespace Acme\Inspector\Issue; use Inspector\Issue\IssueInterface; use Inspector\Issue\BaseIssue // An issue must implement the IssueInterface // To simplify this, simply extend from the BaseIssue class UserWithoutPasswordIssue extends BaseIssue implements IssueInterface { // Optionally provide links to where to solve the issue public function getLinks() { $links = array(); $links[] = new Link('/users/' . $this->getData('userid') . '/resetpassword', 'Reset password'); return $links; } }

Run inspections

use Inspector\Inspector;
use Inspector\Loader\YamlLoader;
use Inspector\Formatter\ConsoleFormatter;

// Create a new container, or reuse an existing one (Symfony DI, Pimple, etc)
$container = array(); 
$container['pdo'] = $myPdoHandle;

// Instantiate a new Inspector
$inspector = new Inspector($container);

// Use a YamlLoader to quickly import a suite of Inspections
$loader = new YamlLoader();
$loader->load($inspector, '/my/inspector/suite.yml');

// Run all the inspections
$inspector->run();

// Create a new formatter to display the output
$formatter = new ConsoleFormatter();

// Echo out the formatted inspector results
echo $formatter->format($inspector);

Creating a inspection suite file

You can define a set of inspections in a YAML file for quick loading and running. The YAML file supports includes, and lets you specify classnames that contain inspect methods:, (*10)

include:
    - other.yml

classes:
    - Acme\Inspection\UserInspection

Running inspections from the console

A console command is included, you can run it like this:, (*11)

vendor/bin/inspector inspector:run path/to/my/suite.yml

It is possible to add more verbose output. Simply add -v or -vv, (*12)

vendor/bin/inspector inspector:run path/to/my/suite.yml -vv

It is also possible to run a single inspection:, (*13)

vendor/bin/inspector inspector:run My\\Inspection\\Class

This runs the inspection suite, and outputs the results to the console., (*14)

Running inspections on SQL databases

If your inspections need an SQL database connection, you can use the --pdoconfig=/path/to/config.ini option. The ini file should contain the server, name, username and password for your database. You can define which driver to use, which will default to mysql if omitted., (*15)

For example:, (*16)

mydatabase.ini name=mydatabase server=localhost username=joe password=secret driver=pgsql, (*17)

License

MIT (see LICENSE.md), (*18)

Brought to you by the LinkORB Engineering team


Check out our other projects at linkorb.com/engineering., (*19)

Btw, we're hiring!, (*20)

The Versions

03/03 2015

dev-master

9999999-dev

Inspect the your app's data, config and user input for issues

  Sources   Download

MIT

The Development Requires

inspector inspect issue sanity check data integrity

03/03 2015

v1.1.1

1.1.1.0

Inspect the your app's data, config and user input for issues

  Sources   Download

MIT

The Development Requires

inspector inspect issue sanity check data integrity

01/03 2015

v1.1.0

1.1.0.0

Inspect the your app's data, config and user input for issues

  Sources   Download

MIT

The Development Requires

inspector inspect issue sanity check data integrity

27/02 2015

v1.0.3

1.0.3.0

Inspect the your app's data, config and user input for issues

  Sources   Download

MIT

The Development Requires

inspector inspect issue sanity check data integrity

27/02 2015

v1.0.2

1.0.2.0

Inspect the your app's data, config and user input for issues

  Sources   Download

MIT

The Development Requires

inspector inspect issue sanity check data integrity

27/02 2015

v1.0.1

1.0.1.0

Inspect the your app's data, config and user input for issues

  Sources   Download

MIT

The Development Requires

inspector inspect issue sanity check data integrity