<commit_before><?php
/**
 * PHPCI - Continuous Integration for PHP
 *
 * @copyright    Copyright 2013, Block 8 Limited.
 * @license      https://github.com/Block8/PHPCI/blob/master/LICENSE.md
 * @link         http://www.phptesting.org/
 */

namespace PHPCI\Plugin;

/**
 * Pdepend Plugin - Allows Pdepend report
 * @author       <NAME> <<EMAIL>>
 * @package      PHPCI
 * @subpackage   Plugins
 */
class Pdepend implements \PHPCI\Plugin
{
    protected $args;
    /**
     * @var \PHPCI\Builder
     */
    protected $phpci;
    /**
     * @var string Directory which needs to be scanned
     */
    protected $directory;
    /**
     * @var string File where the summary.xml is stored
     */
    protected $summary;
    /**
     * @var string File where the chart.svg is stored
     */
    protected $chart;
    /**
     * @var string File where the pyramid.svg is stored
     */
    protected $pyramid;
    /**
     * @var string Location on the server where the files are stored. Preferably in the webroot for inclusion
     *             in the readme.md of the repository
     */
    protected $location;


    public function __construct(\PHPCI\Builder $phpci, array $options = array())
    {
        $this->phpci = $phpci;

        $this->directory = isset($options['directory']) ? $options['directory'] : $phpci->buildPath;

        $this->summary  = $phpci->getBuildProjectTitle() . '-summary.xml';
        $this->pyramid  = $phpci->getBuildProjectTitle() . '-pyramid.svg';
        $this->chart    = $phpci->getBuildProjectTitle() . '-chart.svg';
        $this->location = $this->phpci->buildPath . '..' . DIRECTORY_SEPARATOR . 'pdepend';
    }

    /**
     * Runs Pdepend with the given criteria as arguments
     */
    public function execute()
    {
        if (!is_writable($this->location)) {
            throw new \Exception(sprintf('The location %s is not writable.', $this->location));
        }

        $cmd = PHPCI_BIN_DIR . 'pdepend --summary-xml="%s" --jdepend-chart="%s" --overview-pyramid="%s" "%s"';

        $this->removeBuildArtifacts();
        $success = $this->phpci->executeCommand(
            $cmd,
            $this->location . DIRECTORY_SEPARATOR . $this->summary,
            $this->location . DIRECTORY_SEPARATOR . $this->chart,
            $this->location . DIRECTORY_SEPARATOR . $this->pyramid,
            $this->directory
        );

        $config = $this->phpci->getSystemConfig('phpci');

        if ($success) {
            $this->phpci->logSuccess(
                sprintf(
                    "Pdepend successful. You can use %s\n, ![Chart](%s \"Pdepend Chart\")\n
                    and ![Pyramid](%s \"Pdepend Pyramid\")\n
                    for inclusion in the readme.md file",
                    $config['url'] . '/build/pdepend/' . $this->summary,
                    $config['url'] . '/build/pdepend/' . $this->chart,
                    $config['url'] . '/build/pdepend/' . $this->pyramid
                )
            );
        } else {
            $this->phpci->logFailure(sprintf("The function '%s' failed"));
        }


        return $success;
    }

    /**
     * Remove files created from previous builds
     */
    protected function removeBuildArtifacts()
    {
        //Remove the created files first
        foreach (array($this->summary, $this->chart, $this->pyramid) as $file) {<commit_msg>Honour the ignore directive in Pdepend plugin<commit_after><?php
/**
 * PHPCI - Continuous Integration for PHP
 *
 * @copyright    Copyright 2013, Block 8 Limited.
 * @license      https://github.com/Block8/PHPCI/blob/master/LICENSE.md
 * @link         http://www.phptesting.org/
 */

namespace PHPCI\Plugin;

/**
 * Pdepend Plugin - Allows Pdepend report
 * @author       <NAME> <<EMAIL>>
 * @package      PHPCI
 * @subpackage   Plugins
 */
class Pdepend implements \PHPCI\Plugin
{
    protected $args;
    /**
     * @var \PHPCI\Builder
     */
    protected $phpci;
    /**
     * @var string Directory which needs to be scanned
     */
    protected $directory;
    /**
     * @var string File where the summary.xml is stored
     */
    protected $summary;
    /**
     * @var string File where the chart.svg is stored
     */
    protected $chart;
    /**
     * @var string File where the pyramid.svg is stored
     */
    protected $pyramid;
    /**
     * @var string Location on the server where the files are stored. Preferably in the webroot for inclusion
     *             in the readme.md of the repository
     */
    protected $location;


    public function __construct(\PHPCI\Builder $phpci, array $options = array())
    {
        $this->phpci = $phpci;

        $this->directory = isset($options['directory']) ? $options['directory'] : $phpci->buildPath;

        $this->summary  = $phpci->getBuildProjectTitle() . '-summary.xml';
        $this->pyramid  = $phpci->getBuildProjectTitle() . '-pyramid.svg';
        $this->chart    = $phpci->getBuildProjectTitle() . '-chart.svg';
        $this->location = $this->phpci->buildPath . '..' . DIRECTORY_SEPARATOR . 'pdepend';
    }

    /**
     * Runs Pdepend with the given criteria as arguments
     */
    public function execute()
    {
        if (!is_writable($this->location)) {
            throw new \Exception(sprintf('The location %s is not writable.', $this->location));
        }

        $cmd = PHPCI_BIN_DIR . 'pdepend --summary-xml="%s" --jdepend-chart="%s" --overview-pyramid="%s" %s "%s"';

        $this->removeBuildArtifacts();
       
        // If we need to ignore directories
        if (count($this->phpci->ignore)) {
            $ignore = ' --ignore=' . implode(',', $this->phpci->ignore);
        } else {
            $ignore = '';
        }

        $success = $this->phpci->executeCommand(
            $cmd,
            $this->location . DIRECTORY_SEPARATOR . $this->summary,
            $this->location . DIRECTORY_SEPARATOR . $this->chart,
            $this->location . DIRECTORY_SEPARATOR . $this->pyramid,
            $ignore,
            $this->directory
        );

        $config = $this->phpci->getSystemConfig('phpci');

        if ($success) {
            $this->phpci->logSuccess(
                sprintf(
                    "Pdepend successful. You can use %s\n, ![Chart](%s \"Pdepend Chart\")\n
                    and ![Pyramid](%s \"Pdepend Pyramid\")\n
                    for inclusion in the readme.md file",
                    $config['url'] . '/build/pdepend/' . $this->summary,
                    $config['url'] . '/build/pdepend/' . $this->chart,
                    $config['url'] . '/build/pdepend/' . $this->pyramid
                )
            );
        } else {
            $this->phpci->logFailure(sprintf("The function '%s' failed"));
        }


        return $success;
    }

    /**
     * Remove files created from previous builds
     */
    protected function removeBuildArtifacts()
    {
        //Remove the created files first
        foreach (array($this->summary, $this->chart, $this->pyramid) as $file) {
{'fraction_non_alphanumeric': 0.146337988030778, 'fraction_numerical': 0.0017098888572242804, 'mean_word_length': 1.9628535246939638, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 85, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3915044', 'n_tokens_mistral': 2098, 'n_tokens_neox': 2017, 'n_words': 492}