Commit 5c81e26a authored by Friedemann Kleint's avatar Friedemann Kleint

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: default avatarTobias Hunger <tobias.hunger@theqtcompany.com>
parent bb8270ba
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
=head1 NAME =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 =head1 SYNOPSIS
...@@ -37,16 +37,39 @@ msvc2tasks.pl - Convert MSVC warnings into Qt Creator task files. ...@@ -37,16 +37,39 @@ msvc2tasks.pl - Convert MSVC warnings into Qt Creator task files.
use strict; use strict;
while (my $line = <STDIN> ) { sub filterLine
chomp($line); {
# --- extract file name based matching: my ($line) = @_;
my ($fileName, $lineNumber, $category, $text);
# --- MSVC:
# c:\foo.cpp(395) : warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) # c:\foo.cpp(395) : warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
if ($line =~ /^([^(]+)\((\d+)\) ?: warning (C\d+:.*)$/) { if ($line =~ /^([^(]+)\((\d+)\) ?: (warning|error) (C\d+:.*)$/) {
my $fileName = $1; $fileName = $1;
my $lineNumber = $2; $lineNumber = $2;
my $text = $3; $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; $fileName =~ s|\\|/|g;
$text =~ s|\\|/|g; # Fix file names mentioned in text since tasks file have backslash-escaping. $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;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment