Fixes
This commit is contained in:
parent
dd1d3b3d6a
commit
f33f0a4512
|
@ -2,21 +2,9 @@
|
||||||
|
|
||||||
use Phinx\Migration\AbstractMigration;
|
use Phinx\Migration\AbstractMigration;
|
||||||
use Phinx\Db\Adapter\MysqlAdapter;
|
use Phinx\Db\Adapter\MysqlAdapter;
|
||||||
use PHPCI\Model\BuildMeta;
|
|
||||||
use PHPCI\Model\BuildError;
|
|
||||||
|
|
||||||
class ErrorsTable extends AbstractMigration
|
class ErrorsTable extends AbstractMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var \PHPCI\Store\BuildMetaStore
|
|
||||||
*/
|
|
||||||
protected $metaStore;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var \PHPCI\Store\BuildErrorStore
|
|
||||||
*/
|
|
||||||
protected $errorStore;
|
|
||||||
|
|
||||||
public function change()
|
public function change()
|
||||||
{
|
{
|
||||||
$table = $this->table('build_error');
|
$table = $this->table('build_error');
|
||||||
|
@ -32,126 +20,5 @@ class ErrorsTable extends AbstractMigration
|
||||||
$table->addForeignKey('build_id', 'build', 'id', array('delete'=> 'CASCADE', 'update' => 'CASCADE'));
|
$table->addForeignKey('build_id', 'build', 'id', array('delete'=> 'CASCADE', 'update' => 'CASCADE'));
|
||||||
$table->save();
|
$table->save();
|
||||||
|
|
||||||
$this->updateBuildMeta();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function updateBuildMeta()
|
|
||||||
{
|
|
||||||
$start = 0;
|
|
||||||
$limit = 100;
|
|
||||||
$count = 100;
|
|
||||||
|
|
||||||
$this->metaStore = \b8\Store\Factory::getStore('BuildMeta');
|
|
||||||
$this->errorStore = \b8\Store\Factory::getStore('BuildError');
|
|
||||||
|
|
||||||
while ($count == 100) {
|
|
||||||
$data = $this->metaStore->getErrorsForUpgrade($start, $limit);
|
|
||||||
$start += 100;
|
|
||||||
$count = count($data);
|
|
||||||
|
|
||||||
/** @var \PHPCI\Model\BuildMeta $meta */
|
|
||||||
foreach ($data as $meta) {
|
|
||||||
try {
|
|
||||||
switch ($meta->getMetaKey()) {
|
|
||||||
case 'phpmd-data':
|
|
||||||
$this->processPhpMdMeta($meta);
|
|
||||||
break;
|
|
||||||
case 'phpcs-data':
|
|
||||||
$this->processPhpCsMeta($meta);
|
|
||||||
break;
|
|
||||||
case 'phpunit-data':
|
|
||||||
$this->processPhpUnitMeta($meta);
|
|
||||||
break;
|
|
||||||
case 'phpdoccheck-data':
|
|
||||||
$this->processPhpDocCheckMeta($meta);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} catch (\Exception $ex) {}
|
|
||||||
|
|
||||||
$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->setCreatedDate(new \DateTime());
|
|
||||||
$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->setCreatedDate(new \DateTime());
|
|
||||||
$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->setCreatedDate(new \DateTime());
|
|
||||||
$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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
183
PHPCI/Migrations/20151015124825_convert_errors.php
Normal file
183
PHPCI/Migrations/20151015124825_convert_errors.php
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Phinx\Migration\AbstractMigration;
|
||||||
|
use PHPCI\Model\BuildMeta;
|
||||||
|
use PHPCI\Model\BuildError;
|
||||||
|
|
||||||
|
class ConvertErrors extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var \PHPCI\Store\BuildMetaStore
|
||||||
|
*/
|
||||||
|
protected $metaStore;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var \PHPCI\Store\BuildErrorStore
|
||||||
|
*/
|
||||||
|
protected $errorStore;
|
||||||
|
|
||||||
|
public function change()
|
||||||
|
{
|
||||||
|
$count = 100;
|
||||||
|
|
||||||
|
$this->metaStore = \b8\Store\Factory::getStore('BuildMeta');
|
||||||
|
$this->errorStore = \b8\Store\Factory::getStore('BuildError');
|
||||||
|
|
||||||
|
while ($count == 100) {
|
||||||
|
$data = $this->metaStore->getErrorsForUpgrade(100);
|
||||||
|
$count = count($data);
|
||||||
|
|
||||||
|
/** @var \PHPCI\Model\BuildMeta $meta */
|
||||||
|
foreach ($data as $meta) {
|
||||||
|
try {
|
||||||
|
switch ($meta->getMetaKey()) {
|
||||||
|
case 'phpmd-data':
|
||||||
|
$this->processPhpMdMeta($meta);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'phpcs-data':
|
||||||
|
$this->processPhpCsMeta($meta);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'phpdoccheck-data':
|
||||||
|
$this->processPhpDocCheckMeta($meta);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'phpcpd-data':
|
||||||
|
$this->processPhpCpdMeta($meta);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'technicaldebt-data':
|
||||||
|
$this->processTechnicalDebtMeta($meta);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (\Exception $ex) {}
|
||||||
|
|
||||||
|
$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->setCreatedDate(new \DateTime());
|
||||||
|
$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->setCreatedDate(new \DateTime());
|
||||||
|
$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->setCreatedDate(new \DateTime());
|
||||||
|
$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->setCreatedDate(new \DateTime());
|
||||||
|
$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->setCreatedDate(new \DateTime());
|
||||||
|
$buildError->setFile($error['file']);
|
||||||
|
$buildError->setLineStart($error['line']);
|
||||||
|
$buildError->setSeverity(BuildError::SEVERITY_NORMAL);
|
||||||
|
$buildError->setMessage($error['message']);
|
||||||
|
|
||||||
|
$this->errorStore->save($buildError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -151,7 +151,7 @@ class GithubBuild extends RemoteGitBuild
|
||||||
$link = 'https://github.com/' . $reference . '/';
|
$link = 'https://github.com/' . $reference . '/';
|
||||||
$link .= 'blob/' . $branch . '/';
|
$link .= 'blob/' . $branch . '/';
|
||||||
$link .= '{FILE}';
|
$link .= '{FILE}';
|
||||||
$link .= '#L{LINE}';
|
$link .= '#L{LINE}-L{LINE_END}';
|
||||||
|
|
||||||
return $link;
|
return $link;
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,8 +144,6 @@ CPD;
|
||||||
$file['line'],
|
$file['line'],
|
||||||
(int) $file['line'] + (int) $duplication['lines']
|
(int) $file['line'] + (int) $duplication['lines']
|
||||||
);
|
);
|
||||||
$this->build->reportError($this->phpci, $fileName, $file['line'], $message);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$warnings++;
|
$warnings++;
|
||||||
|
|
|
@ -25,15 +25,14 @@ class BuildMetaStore extends BuildMetaStoreBase
|
||||||
* @param $limit
|
* @param $limit
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getErrorsForUpgrade($start, $limit)
|
public function getErrorsForUpgrade($limit)
|
||||||
{
|
{
|
||||||
$query = 'SELECT * FROM build_meta
|
$query = 'SELECT * FROM build_meta
|
||||||
WHERE meta_key IN (\'phpmd-data\', \'phpcs-data\', \'phpdoccheck-data\')
|
WHERE meta_key IN (\'phpmd-data\', \'phpcs-data\', \'phpdoccheck-data\')
|
||||||
ORDER BY id ASC LIMIT :start, :limit';
|
ORDER BY id ASC LIMIT :limit';
|
||||||
|
|
||||||
$stmt = Database::getConnection('read')->prepare($query);
|
$stmt = Database::getConnection('read')->prepare($query);
|
||||||
|
|
||||||
$stmt->bindValue(':start', $start, \PDO::PARAM_INT);
|
|
||||||
$stmt->bindValue(':limit', $limit, \PDO::PARAM_INT);
|
$stmt->bindValue(':limit', $limit, \PDO::PARAM_INT);
|
||||||
|
|
||||||
if ($stmt->execute()) {
|
if ($stmt->execute()) {
|
||||||
|
|
|
@ -8,6 +8,7 @@ foreach ($errors as $error):
|
||||||
|
|
||||||
$link = str_replace('{FILE}', $error->getFile(), $linkTemplate);
|
$link = str_replace('{FILE}', $error->getFile(), $linkTemplate);
|
||||||
$link = str_replace('{LINE}', $error->getLineStart(), $link);
|
$link = str_replace('{LINE}', $error->getLineStart(), $link);
|
||||||
|
$link = str_replace('{LINE_END}', $error->getLineEnd(), $link);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<tr class="bg-<?php print $error->getSeverityClass(); ?>">
|
<tr class="bg-<?php print $error->getSeverityClass(); ?>">
|
||||||
|
|
Loading…
Reference in a new issue