diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2016-02-03 14:32:45 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2016-02-03 16:02:43 +0000 |
commit | 5c81e26a72a4fcd0fc8a1948401e8d0fb88d2c5c (patch) | |
tree | e55ac116ccea15636d4866aa5b58c83193f4af05 /scripts | |
parent | bb8270bab3b6f73e603e026bdb195853047e17ca (diff) | |
download | qt-creator-5c81e26a72a4fcd0fc8a1948401e8d0fb88d2c5c.tar.gz |
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>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/msvc2tasks.pl | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/scripts/msvc2tasks.pl b/scripts/msvc2tasks.pl index 909c48e2de..8c04888a90 100644 --- a/scripts/msvc2tasks.pl +++ b/scripts/msvc2tasks.pl @@ -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; } |