diff --git a/scripts/msvc2tasks.pl b/scripts/msvc2tasks.pl
index 909c48e2decca7f5dc0b560681449b5a8f1a0a09..8c04888a90bfc5976cbd9ccc97d83684ee020be0 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;
 }