Skip to content

Commit

Permalink
Merge pull request #10012 from ygottschalk/fix/10001-always-report-un…
Browse files Browse the repository at this point in the history
…used-baseline

Always report UnusedBaseline issues
  • Loading branch information
orklah authored Jul 23, 2023
2 parents 3c08110 + 867290c commit afaef14
Showing 1 changed file with 56 additions and 57 deletions.
113 changes: 56 additions & 57 deletions src/Psalm/IssueBuffer.php
Original file line number Diff line number Diff line change
Expand Up @@ -570,78 +570,77 @@ public static function finish(
foreach (self::$issues_data as $file_path => $file_issues) {
usort(
$file_issues,
static fn(IssueData $d1, IssueData $d2): int =>
[$d1->file_path, $d1->line_from, $d1->column_from]
<=>
static fn(IssueData $d1, IssueData $d2): int => [$d1->file_path, $d1->line_from, $d1->column_from]
<=>
[$d2->file_path, $d2->line_from, $d2->column_from]
);
self::$issues_data[$file_path] = $file_issues;
}

// make a copy so what gets saved in cache is unaffected by baseline
$issues_data = self::$issues_data;
}

if (!empty($issue_baseline)) {
// Set severity for issues in baseline to INFO
foreach ($issues_data as $file_path => $file_issues) {
foreach ($file_issues as $key => $issue_data) {
$file = $issue_data->file_name;
$file = str_replace('\\', '/', $file);
$type = $issue_data->type;

if (isset($issue_baseline[$file][$type]) && $issue_baseline[$file][$type]['o'] > 0) {
if ($issue_baseline[$file][$type]['o'] === count($issue_baseline[$file][$type]['s'])) {
$position = array_search(
str_replace("\r\n", "\n", trim($issue_data->selected_text)),
$issue_baseline[$file][$type]['s'],
true,
);

if ($position !== false) {
$issue_data->severity = IssueData::SEVERITY_INFO;
array_splice($issue_baseline[$file][$type]['s'], $position, 1);
$issue_baseline[$file][$type]['o']--;
}
} else {
$issue_baseline[$file][$type]['s'] = [];
if (!empty($issue_baseline)) {
// Set severity for issues in baseline to INFO
foreach ($issues_data as $file_path => $file_issues) {
foreach ($file_issues as $key => $issue_data) {
$file = $issue_data->file_name;
$file = str_replace('\\', '/', $file);
$type = $issue_data->type;

if (isset($issue_baseline[$file][$type]) && $issue_baseline[$file][$type]['o'] > 0) {
if ($issue_baseline[$file][$type]['o'] === count($issue_baseline[$file][$type]['s'])) {
$position = array_search(
str_replace("\r\n", "\n", trim($issue_data->selected_text)),
$issue_baseline[$file][$type]['s'],
true,
);

if ($position !== false) {
$issue_data->severity = IssueData::SEVERITY_INFO;
array_splice($issue_baseline[$file][$type]['s'], $position, 1);
$issue_baseline[$file][$type]['o']--;
}
} else {
$issue_baseline[$file][$type]['s'] = [];
$issue_data->severity = IssueData::SEVERITY_INFO;
$issue_baseline[$file][$type]['o']--;
}

$issues_data[$file_path][$key] = $issue_data;
}

$issues_data[$file_path][$key] = $issue_data;
}
}

if ($codebase->config->find_unused_baseline_entry) {
foreach ($issue_baseline as $file_path => $issues) {
foreach ($issues as $issue_name => $issue) {
if ($issue['o'] !== 0) {
$issues_data[$file_path][] = new IssueData(
IssueData::SEVERITY_ERROR,
0,
0,
UnusedBaselineEntry::getIssueType(),
sprintf(
'Baseline for issue "%s" has %d extra %s.',
$issue_name,
$issue['o'],
$issue['o'] === 1 ? 'entry' : 'entries',
),
$file_path,
'',
'',
'',
0,
0,
0,
0,
0,
0,
UnusedBaselineEntry::SHORTCODE,
UnusedBaselineEntry::ERROR_LEVEL,
);
}
if ($codebase->config->find_unused_baseline_entry) {
foreach ($issue_baseline as $file_path => $issues) {
foreach ($issues as $issue_name => $issue) {
if ($issue['o'] !== 0) {
$issues_data[$file_path][] = new IssueData(
IssueData::SEVERITY_ERROR,
0,
0,
UnusedBaselineEntry::getIssueType(),
sprintf(
'Baseline for issue "%s" has %d extra %s.',
$issue_name,
$issue['o'],
$issue['o'] === 1 ? 'entry' : 'entries',
),
$file_path,
'',
'',
'',
0,
0,
0,
0,
0,
0,
UnusedBaselineEntry::SHORTCODE,
UnusedBaselineEntry::ERROR_LEVEL,
);
}
}
}
Expand Down

0 comments on commit afaef14

Please sign in to comment.