forked from qt-creator/qt-creator
msvc2tasks.pl: Add support for clang-cl.exe and match errors, too.
Move regexp filtering into subroutine for clarity. Task-number: QTCREATORBUG-15641 Task-number: QTBUG-50804 Change-Id: I2b78e82f41b83c64053b350b241f3c14246eb417 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
@@ -27,7 +27,7 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
msvc2tasks.pl - Convert MSVC warnings into Qt Creator task files.
|
||||
msvc2tasks.pl - Convert MSVC/Clang-cl warnings and errors into Qt Creator task files.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
@@ -37,16 +37,39 @@ msvc2tasks.pl - Convert MSVC warnings into Qt Creator task files.
|
||||
|
||||
use strict;
|
||||
|
||||
while (my $line = <STDIN> ) {
|
||||
chomp($line);
|
||||
# --- extract file name based matching:
|
||||
sub filterLine
|
||||
{
|
||||
my ($line) = @_;
|
||||
|
||||
my ($fileName, $lineNumber, $category, $text);
|
||||
|
||||
# --- MSVC:
|
||||
# c:\foo.cpp(395) : warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
|
||||
if ($line =~ /^([^(]+)\((\d+)\) ?: warning (C\d+:.*)$/) {
|
||||
my $fileName = $1;
|
||||
my $lineNumber = $2;
|
||||
my $text = $3;
|
||||
if ($line =~ /^([^(]+)\((\d+)\) ?: (warning|error) (C\d+:.*)$/) {
|
||||
$fileName = $1;
|
||||
$lineNumber = $2;
|
||||
$category = $3;
|
||||
$text = $4;
|
||||
# --- Clang-cl:
|
||||
# ..\gui\text\qfontengine_ft.cpp(1743,5) : warning: variable 'bytesPerLine' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
|
||||
} elsif ($line =~ /^([^(]+)\((\d+),\d+\) ?: +(warning|error):\s+(.*)$/) {
|
||||
$fileName = $1;
|
||||
$lineNumber = $2;
|
||||
$category = $3;
|
||||
$text = $4;
|
||||
}
|
||||
|
||||
if (defined $fileName) {
|
||||
$fileName =~ s|\\|/|g;
|
||||
$text =~ s|\\|/|g; # Fix file names mentioned in text since tasks file have backslash-escaping.
|
||||
print $fileName, "\t", $lineNumber, "\twarn\t", $text,"\n";
|
||||
$category = $category eq 'warning' ? 'warn' : 'err';
|
||||
}
|
||||
|
||||
return ($fileName, $lineNumber, $category, $text);
|
||||
}
|
||||
|
||||
while (my $line = <STDIN> ) {
|
||||
chomp($line);
|
||||
my ($fileName, $lineNumber, $category, $text) = filterLine($line);
|
||||
print $fileName, "\t", $lineNumber, "\t", $category, "\t", $text,"\n" if defined $text;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user