PhpProjectAnalyzerBundle

Symfony bundle for code analysis

11
0
PHP

Php Project Analyzer Bundle

Gives you consolidated views of analysis results.

Build Status
Total Downloads
Latest Stable Version
SensioLabsInsight

It give a view like :

Features

  • Aggregate php analysis metrics
  • Offer user-friendly interface
  • Execute quick scan of your project
  • English or French interfaces
  • Links with code coverage report
  • Scoring based on quantity and quality metrics
  • Enable PhpUnit or Atoum unit tests
  • Security checker available

It executes

  • Php Mess Detector
  • Php Unit Tests
  • Atoum tests
  • Php Code Sniffer ( + reparation tool via phpcbf)
  • Copy-paste detector
  • Php Depend
  • Php Loc

And parses their report to give a nice view for rapid analysis of your project.

Install

  • composer require jdlabails/php-project-analyzer-bundle --dev
  • add bundle to kernel
/* app/AppKernel.php */
public function registerBundles()
    {
// ...
        $bundles[] = new JD\PhpProjectAnalyzerBundle\JDPhpProjectAnalyzerBundle();
// ...
}
  • Add routing
# app/config/routing.yml
ppa:
    resource: '@JDPhpProjectAnalyzerBundle/Resources/config/routing.yml'
  • Add security exception
access_control:
    # PPA
    - { path: "^(/[a-z]{2})?/ppa(/[a-z]*)?", roles: IS_AUTHENTICATED_ANONYMOUSLY }
  • Set your config
framework:
    translator: { fallback: %locale% }

jd_php_project_analyzer:
    title:          Php project analyzer
    description:    It's a ouaaaouhh project !

    gitRepositoryURL:      https://github.com/jdlabails/PhpProjectAnalyzerBundle

    # directory to analyze
    srcPath : /home/jd/Dev/ppa/src/JD

    # quantitative metric
    count : true

    # quality metric : copy-paste
    cpd : true

    # quality metric : code sniffer
    cs :
        enable: true
        standard: PSR2

    # security checker
    security: true

    # quality metric : phpdepend
    depend : true

    # quality metric : phploc
    loc : true

    # quality metric : mess detector
    md :
        enable: true
        rules:
            cleancode: true
            codesize: true
            controversial: true
            design: true
            naming: true
            unusedcode: true

    # generate phpdoc
    docs : true

    # testing
    test :
        enable: false
        lib : phpunit       # phpunit || atoum
        phpunitTestSuite : ppa
#        atoumPath : /home/smith/www/projectX/vendor/bin/atoum
#        atoumTestDir : /absolute/path/to/your/test/dir

    # score
    score:
        enable:         true
        csWeight:       100     # between 0 and 100, weighting of code sniffer
        testWeight:     100     # between 0 and 100, weighting of testing
        locWeight:      100     # between 0 and 100, weighting of code coverage

  • Set assets
php app/console assets:install
  • Set right for ppa directory in the web directory
sudo php app/console ppa:init
  • Add web/ppa in your .gitignore

Use

update your phar

cd Resources/_phar
chmod +x  update.sh
./update.sh

Commands available

ppa:analyse:launch ==> launch analysis without web interface
ppa:analyse:read ==> read analysis without web interface. The result is in json

Need contributions

Examples :

  • avoid phar files for dependencies symfony
  • refacto code
  • unit tests
  • download security checker at each scan
  • behat

Just make a pull request on master

Check style
bin/phpcs --standard=PSR2 --extensions=php Entities Manager Command Controller DependencyInjection Traits
Unit Tests
bin/simple-phpunit -c phpunit.xml
Tip for local project

Put in your composer.json

  "minimum-stability": "dev",
  "prefer-stable": true,
  "repositories": [
    {
      "type": "path",
      "url": "/path/to/your/project/dir/jdlabails-php-project-analyzer-bundle/"
    }
  ],