Tool helping us to analyze software projects

Overview

Qafoo Quality Analyzer

Travis Status

This software is a tool to visualize metrics and source code. We use this software for Code Reviews together with our customers.

Screeenshot

Running the analyzers requires the respective PHP tools, which are installed using composer and can all be run using a convenience command. You may also run the tools in your common build process, though.

To display the metrics a pure JavaScript / CSS stack is used so you could build and serve the results inside continuous integration tools like Jenkins. This might seem strange but it works really well even with software spanning 800,000 lines of PHP code.

If you want to improve, enhance the software or just fix some annoying bugs, you are very welcome to do so. The technology stack involved sadly is not that simple, though (PHP, Symfony2, Ant, Babel, D3, Grunt, Jasmine, Karma, SASS, PhantomJs, React, React-Router, Underscore, Webpack). A Code of Conduct applies for any interaction with this project – if you feel like it is violated get in contact with Kore.

Setup

To use the software there are very few steps involved. The only requirement is a current version of PHP.

Run the following commands to install the software:

git clone https://github.com/Qafoo/QualityAnalyzer.git
cd QualityAnalyzer
composer install

In the next step you can already analyze some software using something like this:

bin/analyze analyze src/php/

See "Usage" for more details on the command. The results of this command can be found in the data/ folder.

Finally you can start the webserver to view the results:

bin/analyze serve

Click around and enjoy the data!

Usage

You start by analyzing a certain project or providing the tool with the paths to existing analyze files, like code coverage reports:

bin/analyze analyze /path/to/source

With the default command the tool will analyze the source code itself. For tools like PHPMD or PDepend this makes a lot of sense since the tool already knows which options to use for each tool.

There are some reports we cannot generate ourselves like code coverage from your tests. You can tell the tool where to find certain files to make sure they are available and ready to be used:

bin/analyze \
    --coverage=/path/to/clover.xml \
    --tests=/path/to/junit.xml \
    analyze /path/to/source

You can also specify already generated files for all the other tools. But the visualization might behave strangely if some reports are generated in the wrong formats or some options are missing. We do not verify this (yet) properly.

To view the report in HTML format, run bin/analyze bundle /path/for/generated/html and then open /path/for/generated/html/index.html with your browser.

Ignore Sub-Directories

You might also want to tell the tools which directories there are to ignore by the tools. This is especially important if you have (large) libraries in your source directory – you do not want to analyze those. For this you may use the --exclude option:

bin/analyze \
    --coverage=/path/to/clover.xml \
    --tests=/path/to/junit.xml \
    --exclude=libraries,vendor \
    analyze /path/to/source

After the analyzer has finished use bin/analyze serve or similar means to access the index.html with your browser and enjoy the results visualization.

Exclude Analyzers

You might also to avoid some analyzers to be run on your code intentionally, e.g. if you don't want your git usage be analysed. For this you may use the --exclude_analyzers option:

bin/analyze \
    --exclude_analyzers=git,gitDetailed \
    analyze /path/to/source

To get a list of all available analyzers, run:

bin/analyze list:analyzers

Customize Tools

If you want to customize tool execution you can always run all the tools yourself and pass the existing result files to the analyze command. An example customizable ant build file doing this can be found here: src/examples/customize.xml or src/examples/parallel.xml.

The parameters to pass you custom results, which wil omit running the tool by the analyzer command itself are:

--pdepend=PDEPEND            Path to PDepend summary XML file
--dependencies=DEPENDENCIES  Path to PDepend dependencies XML file
--phpmd=PHPMD                Path to mess detector (PMD / PHPMD) XML file
--checkstyle=CHECKSTYLE      Path to checkstyle violations (PHP Code Sniffer) XML file
--cpd=CPD                    Path to C&P violations (PHP Copy Paste Detector) XML file
--phploc=PHPLOC              Path to PHPLoc result XML file

Feel free to provide examples using different build environments by creating a pull request.

Building & Developing The Software

The build system of the Quality Analyzer is based on ant. You must have ant >= 1.8 installed. To be able to use it you should first initilaize the submodule containing the build commons:

git submodule update --init

To develop the Quality Analyzer we heavily depend on a JavaScript build stack. For this you must have node and npm installed. All other required tools will be installed by the build tool. To set the project into development mode run:

echo env=dev > environment.local

As long as you do not remove this line from the environment.local file any more or change it to prod all development tools and libraries will be installed and used. This also means JavaScript and CSS will be compiled by commands like ant serve.

Running The Tests

You can run the tests by executing ant.

It will run run tests through Karma & Jasmine for parts of the JavaScript stack and PHPUnit tests for the PHP stack (once we have some).

Building CSS & JavaScript

The project uses ECMAScript 6 and transpiles it using Babel. Thus we need to update the bundle.js when working on the client. This is done when the project is prepared but can also be executed continuously using:

ant watch

This also compiles the SASS from the project and Bootstrap file into a single CSS file.

Trying Out The Project

If you want to try out the project you can serve the root directory with basically any webserver. The webserver should rewrite all requests to unknown resources to the index.html file which does the routing using JavaScript.

For your convenience we included a working server setup using PHPs internal webserver. You can start it using:

ant serve

Generating The Bundle Files

The following task ensures the bundle files are generated, compressed and comitted:

ant deploy

Use this command to update the distributed files.

It will run the package task first (after running all tests, of course). If there are changes in the assets/ folder those changes will be comitted and the current development state will then be pushed.

Comments
  • Make QualityAnalyzer work as an composer dependency

    Make QualityAnalyzer work as an composer dependency

    Usage:

    require-dev: {
        "qafoo/quality-analyzer": "dev-master"
    },
    repositories: [
      {
        "type": "vcs",
        "url": "https://github.com/Qafoo/QualityAnalyzer"
      }
    ]
    

    Run composer:

    composer update
    

    And now you can run it inside your project with:

    vendor/bin/analyze ...
    
    opened by jenschude 11
  • Using CS config

    Using CS config

    When running the analyzer, it generates a non-usable code style violations report for many of my projects, as they use a different standard than this tool. They do have phpmd.xml and phpcs.xml rule files in their root, though these appear to be ignored by the analyzer. Is there an option to have those be used? (I'm not seeing anything in the README or the help command output.)

    opened by JeroenDeDauw 6
  • PHP 7.0 Errors with Zip

    PHP 7.0 Errors with Zip

    I got these errors when I executed the package and I don't understand the problems.

    Analyze source code in /path/of/folder
     * Running source
     * Running coverage
     * Running pdepend
    Exception: Command "/opt/QualityAnalyzer/vendor/bin/pdepend '--summary-xml=/tmp/qabbqDQp' '--coderank-mode=inheritance,property,method' '--ignore=lib' '/path/of/folder'" exited with non zero exit code 255: PDepend 2.2.4
    
    Parsing source files:
    ............................................................    60
    ............................................................   120
    ............................................................   180
    ............................................................   240
    ............................................................   300
    ............................................................   360
    ............................................................   420
    ............................................................   480
    ............................................................   540
    ............................................................   600
    ............................................................   660
    ............................................................   720
    ............................................................   780
    ............................................................   840
    ............................................................   900
    ............................................................   960
    ............................................................  1020
    ............................................................  1080
    ............................................................  1140
    ............................................................  1200
    ............................................................  1260
    ............................................................  1320
    ............................................................  1380
    ....................... in /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Shell.php:54
    Stack trace:
    #0 /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Handler/PDepend.php(55): Qafoo\Analyzer\Shell->exec('/opt/QualityAna...', Array)
    #1 /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Command/Analyze.php(136): Qafoo\Analyzer\Handler\PDepend->handle(Object(Qafoo\Analyzer\Project), NULL)
    #2 /opt/QualityAnalyzer/vendor/symfony/console/Command/Command.php(259): Qafoo\Analyzer\Command\Analyze->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #3 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(849): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #4 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(193): Symfony\Component\Console\Application->doRunCommand(Object(Qafoo\Analyzer\Command\Analyze), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #5 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 /opt/QualityAnalyzer/bin/analyze(15): Symfony\Component\Console\Application->run()
    #7 {main}
     * Running dependencies
    Exception: Command "/opt/QualityAnalyzer/vendor/bin/pdepend '--dependency-xml=/tmp/qaBJJCRQ' '--ignore=lib' '/path/of/folder'" exited with non zero exit code 255: PDepend 2.2.4
    
    Parsing source files:
    ............................................................    60
    ............................................................   120
    ............................................................   180
    ............................................................   240
    ............................................................   300
    ............................................................   360
    ............................................................   420
    ............................................................   480
    ............................................................   540
    ............................................................   600
    ............................................................   660
    ............................................................   720
    ............................................................   780
    ............................................................   840
    ............................................................   900
    ............................................................   960
    ............................................................  1020
    ............................................................  1080
    ............................................................  1140
    ............................................................  1200
    ............................................................  1260
    ............................................................  1320
    ............................................................  1380
    ....................... in /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Shell.php:54
    Stack trace:
    #0 /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Handler/Dependencies.php(50): Qafoo\Analyzer\Shell->exec('/opt/QualityAna...', Array)
    #1 /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Command/Analyze.php(136): Qafoo\Analyzer\Handler\Dependencies->handle(Object(Qafoo\Analyzer\Project), NULL)
    #2 /opt/QualityAnalyzer/vendor/symfony/console/Command/Command.php(259): Qafoo\Analyzer\Command\Analyze->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #3 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(849): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #4 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(193): Symfony\Component\Console\Application->doRunCommand(Object(Qafoo\Analyzer\Command\Analyze), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #5 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 /opt/QualityAnalyzer/bin/analyze(15): Symfony\Component\Console\Application->run()
    #7 {main}
     * Running phpmd
    Exception: Command "/opt/QualityAnalyzer/vendor/bin/phpmd '--reportfile' '/tmp/qad8Tj0k' '--exclude' 'lib' '/path/of/folder' 'xml' 'cleancode,codesize,design'" exited with non zero exit code 255:  in /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Shell.php:54
    Stack trace:
    #0 /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Handler/PHPMD.php(54): Qafoo\Analyzer\Shell->exec('/opt/QualityAna...', Array, Array)
    #1 /opt/QualityAnalyzer/src/php/Qafoo/Analyzer/Command/Analyze.php(136): Qafoo\Analyzer\Handler\PHPMD->handle(Object(Qafoo\Analyzer\Project), NULL)
    #2 /opt/QualityAnalyzer/vendor/symfony/console/Command/Command.php(259): Qafoo\Analyzer\Command\Analyze->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #3 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(849): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #4 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(193): Symfony\Component\Console\Application->doRunCommand(Object(Qafoo\Analyzer\Command\Analyze), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #5 /opt/QualityAnalyzer/vendor/symfony/console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 /opt/QualityAnalyzer/bin/analyze(15): Symfony\Component\Console\Application->run()
    #7 {main}
     * Running checkstyle
    
    opened by Mte90 5
  • Could not find project.json.

    Could not find project.json.

    Hi,

    I have installed Qafoo on Wamp and i have this error : Could not find project.json. Run bin/analyze analyze path/t/source and reload.

    What's wrong ?

    Thanks,

    opened by yohann-teisseire 5
  • Modifying to work on Windows

    Modifying to work on Windows

    I do most of my dev on Windows, so trying to get this to run proved problematic. Made appropriate adjustments and pulled in an unofficial composer PclZip package to get it working, but it does work fine now on my local Win10 machine.

    opened by AndyM84 5
  • 'zip' is not recognized as an internal or external command

    'zip' is not recognized as an internal or external command

    Getting this on windows:

    Analyze source code in C:\xxx\xxx\xxx
     * Running source
    'zip' is not recognized as an internal or external command,
    operable program or batch file.
    exception 'Exception' with message 'Program exited with non zero exit code 1: ' in C:\Users\emedina\QualityAnalyzer\src\php\Qafoo\Analyzer\Shell.php:41
    Stack trace:
    #0 C:\Users\emedina\QualityAnalyzer\src\php\Qafoo\Analyzer\Handler\Source.php(62): Qafoo\Analyzer\Shell->exec('zip', Array)
    #1 C:\Users\emedina\QualityAnalyzer\src\php\Qafoo\Analyzer\Command\Analyze.php(104): Qafoo\Analyzer\Handler\Source->handle('C:\\inetpub\\wwwr...', Array, NULL, NULL)
    #2 C:\Users\emedina\QualityAnalyzer\vendor\symfony\console\Command\Command.php(259): Qafoo\Analyzer\Command\Analyze->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #3 C:\Users\emedina\QualityAnalyzer\vendor\symfony\console\Application.php(878): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #4 C:\Users\emedina\QualityAnalyzer\vendor\symfony\console\Application.php(195): Symfony\Component\Console\Application->doRunCommand(Object(Qafoo\Analyzer\Command\Analyze), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #5 C:\Users\emedina\QualityAnalyzer\vendor\symfony\console\Application.php(126): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 C:\Users\emedina\QualityAnalyzer\bin\analyze(9): Symfony\Component\Console\Application->run()
    #7 {main}
     * Running coverage
     * Running pdepend
    
    opened by edsonmedina 5
  • bundle.js:36248 Cannot handle data of type:application/octet-stream

    bundle.js:36248 Cannot handle data of type:application/octet-stream

    Tried to serve the application after analyzing src/php folder of QualityAnalyzer. There are also issues with bundle.js.map and bundle.css.map. I am running it inside a vagrant machine. I could access the site, 'Initializing application' is check marked. Then the title error is thrown during loading data of the project.json file.

    opened by metanerd 4
  • Exclude files/folder from scanning

    Exclude files/folder from scanning

    I use some libraries from others but I don't want to scan them for speed up the process and not have to study also their code. There is a way to do that?

    opened by Mte90 4
  • multiple projects / results

    multiple projects / results

    Is it possible to group all result files into a single 'packaged' directory for serving?

    My idea is to have analyze dump all ouput into a 'named' subdirectory of data/ that would hold everything. The thing i'm still working out is the initial page of loading from the right starting point. It would allow analyzing various projects using a single instance and integrating it into our CI setup for every build... Currently I'm trying to alter all the JSX files to allow subdir selection by adding an Application class which would (currently) serve as a root aside from / (when starting at data/

    From your standpoint: is this a right thing to do, or should i just stop and rebind my docker container to different /data volumes so that /data inside the container points to a different build? :)

    opened by fruitl00p 4
  • Invalid arguments when invoking zip

    Invalid arguments when invoking zip

    exception 'Exception' with message 'Program exited with non zero exit code 16:
    zip error: Invalid command arguments (option 'x' (exclude files matching patterns) requires a value)' in /Users/lstrojny/Projects/InterNations/QualityAnalyzer/src/php/Qafoo/Analyzer/Shell.php:41
    Stack trace:
    #0 /Users/lstrojny/Projects/InterNations/QualityAnalyzer/src/php/Qafoo/Analyzer/Handler/Source.php(62): Qafoo\Analyzer\Shell->exec('zip', Array)
    #1 /Users/lstrojny/Projects/InterNations/QualityAnalyzer/src/php/Qafoo/Analyzer/Command/Analyze.php(104): Qafoo\Analyzer\Handler\Source->handle('/Users/lstrojny...', Array, NULL, NULL)
    #2 /Users/lstrojny/Projects/InterNations/QualityAnalyzer/vendor/symfony/console/Command/Command.php(259): Qafoo\Analyzer\Command\Analyze->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #3 /Users/lstrojny/Projects/InterNations/QualityAnalyzer/vendor/symfony/console/Application.php(878): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #4 /Users/lstrojny/Projects/InterNations/QualityAnalyzer/vendor/symfony/console/Application.php(195): Symfony\Component\Console\Application->doRunCommand(Object(Qafoo\Analyzer\Command\Analyze), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #5 /Users/lstrojny/Projects/InterNations/QualityAnalyzer/vendor/symfony/console/Application.php(126): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 /Users/lstrojny/Projects/InterNations/QualityAnalyzer/bin/analyze(9): Symfony\Component\Console\Application->run()
    
    opened by lstrojny 4
  • Warning: ZipArchive::close(): Read error: Is a directory in QualityAnalyzer/src/php/Qafoo/Analyzer/Handler/Source.php on line 46

    Warning: ZipArchive::close(): Read error: Is a directory in QualityAnalyzer/src/php/Qafoo/Analyzer/Handler/Source.php on line 46

    What did I do wrong?

    Analyze source code in /Users/kb1/backend-vagrant/backend
     * Running source
    
    Warning: ZipArchive::close(): Read error: Is a directory in /Users/kb1/versioned/QualityAnalyzer/src/php/Qafoo/Analyzer/Handler/Source.php on line 46
     * Running coverage
     * Running pdepend```
    opened by klausbreyer 2
  • how to run this tool?

    how to run this tool?

    when i run "bin/analyze analyze path/t/source", following error occurs. 'bin' is not recognized as an internal or external command, operable program or batch file.

    plz give me your hand thx

    opened by alphadev102 0
  • Undefined index: ccn in PHPLOC

    Undefined index: ccn in PHPLOC

    Hi,

    I'm getting the following warning:

    PHP Notice:  Undefined index: ccn in ~/projects/QualityAnalyzer/vendor/phploc/phploc/src/Analyser.php on line 507
    
    Click to view full log
    $ ~/projects/QualityAnalyzer/bin/analyze analyze -c build/coverage-clover.xml -t build/tests-junit.xml -vvv src/
    Analyze source code in ~/projects/clippings/src
     * Running source
     * Running coverage
     * Running pdepend
     * Running dependencies
     * Running phpmd
     * Running checkstyle
     * Running tests
     * Running cpd
     * Running phploc
    PHP Notice:  Undefined index: ccn in ~/projects/QualityAnalyzer/vendor/phploc/phploc/src/Analyser.php on line 507
    PHP Notice:  Undefined index: ccn in ~/projects/QualityAnalyzer/vendor/phploc/phploc/src/Analyser.php on line 507
    PHP Notice:  Undefined index: ccn in ~/projects/QualityAnalyzer/vendor/phploc/phploc/src/Analyser.php on line 507
    PHP Notice:  Undefined index: ccn in ~/projects/QualityAnalyzer/vendor/phploc/phploc/src/Analyser.php on line 507
    PHP Notice:  Undefined index: ccn in ~/projects/QualityAnalyzer/vendor/phploc/phploc/src/Analyser.php on line 507
     * Running git
     * Running gitDetailed
    .
    .
    .

    However, when I run PHP LOC independently, I don't get this warning with the same codebase.

    Let me know if I could be of any further help investigating this.

    opened by hkdobrev 1
  • Inherited properties

    Inherited properties

    I have properties of classes that do not use inheritance and are not inherited from being counted. Is that the correct behavior?

    This page, pdepend?metric=varsi&type=class, is showing me the same as the class properties pdepend?metric=vars&type=class one.

    opened by JeroenDeDauw 0
Owner
Qafoo GmbH
Qafoo GmbH
Deptrac is a static code analysis tool for PHP that helps you communicate, visualize and enforce architectural decisions in your projects

Deptrac is a static code analysis tool for PHP that helps you communicate, visualize and enforce architectural decisions in your projects. You can freely define your architectural layers over classes and which rules should apply to them.

QOSSMIC GmbH 2.2k Dec 30, 2022
A tool to automatically fix PHP Coding Standards issues

PHP Coding Standards Fixer The PHP Coding Standards Fixer (PHP CS Fixer) tool fixes your code to follow standards; whether you want to follow PHP codi

null 11.6k Jan 3, 2023
PHP Static Analysis Tool - discover bugs in your code without running it!

PHPStan - PHP Static Analysis Tool PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even b

PHPStan 11.6k Dec 30, 2022
A PHP code-quality tool

GrumPHP Sick and tired of defending code quality over and over again? GrumPHP will do it for you! This composer plugin will register some git hooks in

PHPro 3.9k Jan 1, 2023
Beautiful and understandable static analysis tool for PHP

PhpMetrics PhpMetrics provides metrics about PHP project and classes, with beautiful and readable HTML report. Documentation | Twitter | Contributing

PhpMetrics 2.3k Dec 22, 2022
A tool for quickly measuring the size of a PHP project.

PHPLOC phploc is a tool for quickly measuring the size and analyzing the structure of a PHP project. Installation This tool is distributed as a PHP Ar

Sebastian Bergmann 2.3k Jan 4, 2023
PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD. PHPMD can be seen as an user friendly frontend application for the raw metrics stream measured by PHP Depend.

PHPMD PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD. PHPMD can be seen as an user friendly

PHP Mess Detector 2.1k Jan 8, 2023
A command line refactoring tool for PHP

PHP Refactoring Browser Note: This software is under development and in alpha state. Refactorings do not contain all necessary pre-conditions and migh

QafooLabs 562 Dec 30, 2022
A static php code analysis tool using the Graph Theory

Mondrian Ok guyz, you have a master degree in Graph Theory, you follow Law of Demeter and you live on S.O.L.I.D principles ? Let's have some Fun ! (^ω

Florent Genette 391 Nov 30, 2022
PHPCheckstyle is an open-source tool that helps PHP programmers adhere to certain coding conventions.

PHPCheckstyle Overview PHPCheckstyle is an open-source tool that helps PHP programmers adhere to certain coding conventions. The tools checks the inpu

PHPCheckstyle 157 Dec 5, 2022
PHP completion, refactoring, introspection tool and language server.

Phpactor This project aims to provide heavy-lifting refactoring and introspection tools which can be used standalone or as the backend for a text edit

Phpactor 882 Jan 1, 2023
PHP Architecture Tester - Easy to use architectural testing tool for PHP :heavy_check_mark:

Easy to use architecture testing tool for PHP Introduction ?? PHP Architecture Tester is a static analysis tool to verify architectural requirements.

Carlos A Sastre 765 Dec 30, 2022
A static analysis tool for finding errors in PHP applications

Psalm Psalm is a static analysis tool for finding errors in PHP applications. Installation To get started, check out the installation guide. Live Demo

Vimeo 5k Jan 2, 2023
Baseline tool for PHP_CodeSniffer

PHP_CodeSniffer Baseliner This tool enables you to integrate PHP_CodeSniffer into an existing project by automatically adding phpcs:ignore and phpcs:d

ISAAC 13 Nov 26, 2022
A web tool to explore the ASTs generated by PHP-Parser.

phpast.com A web tool to explore the ASTs generated by PHP-Parser. About This web tool provides a GUI for exploring the AST of your PHP code. You can

Ryan Chandler 23 Nov 29, 2022
All In 1 Spam Tool For Termux Users Subscribe Us (Noob Hackers) some shit heads are trying to abuse this script so don't worry about them ...let them hallucinate ...but you are free to use this script

ABOUT TOOL : SPAMX is a all in one Bombing+Spam tool from this tool you can send anonymous messages to your target without showing your real number an

N17R0 449 Jan 7, 2023
A static analysis tool for security

progpilot A static analyzer for security purposes Only PHP language is currently supported Installation Option 1: use standalone phar Download the lat

null 271 Dec 27, 2022
A tool to automatically fix PHP Coding Standards issues by Dragon Code.

A tool to automatically fix PHP Coding Standards issues by Dragon Code.

The Dragon Code 24 Aug 27, 2022
Registry Component provides a fluent, object-oriented interface for storing data globally in a well managed fashion, helping to prevent global meltdown.

Registry Component Registry Component provides a fluent, object-oriented interface for storing data globally in a well managed fashion, helping to pre

ATOMASTIC 8 Jun 30, 2022
A PHP microservice for helping know who's who

Identity service Identity is a microservice and API (Application Programming Interface) used for handling everything to do with who's who. For now the

The Big Give 1 Dec 22, 2022