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
|
|
|
|
{
|
|
|
|
/**
|
2016-07-21 19:20:59 +02:00
|
|
|
* @var \PHPCensor\Store\BuildMetaStore
|
2015-10-15 15:23:55 +02:00
|
|
|
*/
|
|
|
|
protected $metaStore;
|
|
|
|
|
|
|
|
/**
|
2016-07-21 19:20:59 +02:00
|
|
|
* @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;
|
|
|
|
|
2017-04-13 17:00:29 +02:00
|
|
|
$this->metaStore = Factory::getStore('BuildMeta');
|
|
|
|
$this->errorStore = Factory::getStore('BuildError');
|
2015-10-15 15:23:55 +02:00
|
|
|
|
2018-02-23 11:40:56 +01:00
|
|
|
while ($count >= 100) {
|
|
|
|
$data = $this->metaStore->getErrorsForUpgrade(100);
|
2015-10-15 15:23:55 +02:00
|
|
|
$count = count($data);
|
|
|
|
|
2016-07-21 19:20:59 +02:00
|
|
|
/** @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');
|
2017-10-19 17:05:00 +02:00
|
|
|
$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');
|
2017-10-19 17:05:00 +02:00
|
|
|
$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');
|
2017-10-19 17:05:00 +02:00
|
|
|
$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');
|
2017-10-19 17:05:00 +02:00
|
|
|
$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');
|
2017-10-19 17:05:00 +02:00
|
|
|
$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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|