Dump a new CSV with warning messages

Bug: 171068870
Test: manual
Change-Id: Ibb528940daf9a6cd99ece8e5a63d67aacdfc131c
diff --git a/tools/warn/html_writer.py b/tools/warn/html_writer.py
index b8d3fe6..026a6d0 100644
--- a/tools/warn/html_writer.py
+++ b/tools/warn/html_writer.py
@@ -359,6 +359,25 @@
   csvwriter.writerow([total, '', 'All warnings'])
 
 
+def dump_csv_with_description(csvwriter, warning_records, warning_messages,
+                              warn_patterns, project_names):
+  """Outputs all the warning messages by project."""
+  csv_output = []
+  for record in warning_records:
+    project_name = project_names[record[1]]
+    pattern = warn_patterns[record[0]]
+    severity = pattern['severity'].header
+    category = pattern['category']
+    description = pattern['description']
+    warning = warning_messages[record[2]]
+    csv_output.append([project_name, severity,
+                       category, description,
+                       warning])
+  csv_output = sorted(csv_output)
+  for output in csv_output:
+    csvwriter.writerow(output)
+
+
 # Return s with escaped backslash and quotation characters.
 def escape_string(s):
   return s.replace('\\', '\\\\').replace('"', '\\"')
@@ -666,6 +685,12 @@
     with open(flags.csvpath, 'w') as f:
       dump_csv(csv.writer(f, lineterminator='\n'), warn_patterns)
 
+  if flags.csvwithdescription:
+    with open(flags.csvwithdescription, 'w') as f:
+      dump_csv_with_description(csv.writer(f, lineterminator='\n'),
+                                warning_records, warning_messages,
+                                warn_patterns, project_names)
+
   if flags.gencsv:
     dump_csv(csv.writer(sys.stdout, lineterminator='\n'), warn_patterns)
   else: