php-censor/src/Migrations/20151015124825_convert_errors.php

183 lines
6.3 KiB
PHP
Raw Permalink Normal View History

2015-10-15 15:23:55 +02:00
<?php
use Phinx\Migration\AbstractMigration;
2016-07-19 20:28:11 +02:00
use PHPCensor\Model\BuildMeta;
use PHPCensor\Model\BuildError;
2018-03-04 08:30:34 +01:00
use PHPCensor\Store\Factory;
2015-10-15 15:23:55 +02:00
class ConvertErrors extends AbstractMigration
{
/**
* @var \PHPCensor\Store\BuildMetaStore
2015-10-15 15:23:55 +02:00
*/
protected $metaStore;
/**
* @var \PHPCensor\Store\BuildErrorStore
2015-10-15 15:23:55 +02:00
*/
protected $errorStore;
2016-05-07 08:43:21 +02:00
public function up()
2015-10-15 15:23:55 +02:00
{
$count = 100;
$this->metaStore = Factory::getStore('BuildMeta');
$this->errorStore = Factory::getStore('BuildError');
2015-10-15 15:23:55 +02:00
while ($count >= 100) {
$data = $this->metaStore->getErrorsForUpgrade(100);
2015-10-15 15:23:55 +02:00
$count = count($data);
/** @var \PHPCensor\Model\BuildMeta $meta */
2015-10-15 15:23:55 +02:00
foreach ($data as $meta) {
2016-05-07 08:43:21 +02:00
switch ($meta->getMetaKey()) {
case 'phpmd-data':
$this->processPhpMdMeta($meta);
break;
2015-10-15 15:23:55 +02:00
2016-05-07 08:43:21 +02:00
case 'phpcs-data':
$this->processPhpCsMeta($meta);
break;
2015-10-15 15:23:55 +02:00
2016-05-07 08:43:21 +02:00
case 'phpdoccheck-data':
$this->processPhpDocCheckMeta($meta);
break;
2015-10-15 15:23:55 +02:00
2016-05-07 08:43:21 +02:00
case 'phpcpd-data':
$this->processPhpCpdMeta($meta);
break;
2015-10-15 15:23:55 +02:00
2016-05-07 08:43:21 +02:00
case 'technical_debt-data':
$this->processTechnicalDebtMeta($meta);
break;
}
2015-10-15 15:23:55 +02:00
$this->metaStore->delete($meta);
}
}
}
protected function processPhpMdMeta(BuildMeta $meta)
{
$data = json_decode($meta->getMetaValue(), true);
if (is_array($data) && count($data)) {
foreach ($data as $error) {
$buildError = new BuildError();
$buildError->setBuildId($meta->getBuildId());
$buildError->setPlugin('php_mess_detector');
$buildError->setCreateDate(new \DateTime());
2015-10-15 15:23:55 +02:00
$buildError->setFile($error['file']);
$buildError->setLineStart($error['line_start']);
$buildError->setLineEnd($error['line_end']);
$buildError->setSeverity(BuildError::SEVERITY_HIGH);
$buildError->setMessage($error['message']);
$this->errorStore->save($buildError);
}
}
}
protected function processPhpCsMeta(BuildMeta $meta)
{
$data = json_decode($meta->getMetaValue(), true);
if (is_array($data) && count($data)) {
foreach ($data as $error) {
$buildError = new BuildError();
$buildError->setBuildId($meta->getBuildId());
$buildError->setPlugin('php_code_sniffer');
$buildError->setCreateDate(new \DateTime());
2015-10-15 15:23:55 +02:00
$buildError->setFile($error['file']);
$buildError->setLineStart($error['line']);
$buildError->setLineEnd($error['line']);
$buildError->setMessage($error['message']);
switch ($error['type']) {
case 'ERROR':
$buildError->setSeverity(BuildError::SEVERITY_HIGH);
break;
case 'WARNING':
$buildError->setSeverity(BuildError::SEVERITY_LOW);
break;
}
$this->errorStore->save($buildError);
}
}
}
protected function processPhpDocCheckMeta(BuildMeta $meta)
{
$data = json_decode($meta->getMetaValue(), true);
if (is_array($data) && count($data)) {
foreach ($data as $error) {
$buildError = new BuildError();
$buildError->setBuildId($meta->getBuildId());
$buildError->setPlugin('php_docblock_checker');
$buildError->setCreateDate(new \DateTime());
2015-10-15 15:23:55 +02:00
$buildError->setFile($error['file']);
$buildError->setLineStart($error['line']);
$buildError->setLineEnd($error['line']);
switch ($error['type']) {
case 'method':
$buildError->setMessage($error['class'] . '::' . $error['method'] . ' is missing a docblock.');
$buildError->setSeverity(BuildError::SEVERITY_NORMAL);
break;
case 'class':
$buildError->setMessage('Class ' . $error['class'] . ' is missing a docblock.');
$buildError->setSeverity(BuildError::SEVERITY_LOW);
break;
}
$this->errorStore->save($buildError);
}
}
}
protected function processPhpCpdMeta(BuildMeta $meta)
{
$data = json_decode($meta->getMetaValue(), true);
if (is_array($data) && count($data)) {
foreach ($data as $error) {
$buildError = new BuildError();
$buildError->setBuildId($meta->getBuildId());
$buildError->setPlugin('php_cpd');
$buildError->setCreateDate(new \DateTime());
2015-10-15 15:23:55 +02:00
$buildError->setFile($error['file']);
$buildError->setLineStart($error['line_start']);
$buildError->setLineEnd($error['line_end']);
$buildError->setSeverity(BuildError::SEVERITY_NORMAL);
$buildError->setMessage('Copy and paste detected.');
$this->errorStore->save($buildError);
}
}
}
protected function processTechnicalDebtMeta(BuildMeta $meta)
{
$data = json_decode($meta->getMetaValue(), true);
if (is_array($data) && count($data)) {
foreach ($data as $error) {
$buildError = new BuildError();
$buildError->setBuildId($meta->getBuildId());
$buildError->setPlugin('technical_debt');
$buildError->setCreateDate(new \DateTime());
2015-10-15 15:23:55 +02:00
$buildError->setFile($error['file']);
$buildError->setLineStart($error['line']);
$buildError->setSeverity(BuildError::SEVERITY_NORMAL);
$buildError->setMessage($error['message']);
$this->errorStore->save($buildError);
}
}
}
}