|
@@ -6,6 +6,7 @@
|
|
#
|
|
#
|
|
|
|
|
|
import logging
|
|
import logging
|
|
|
|
+import io
|
|
import os
|
|
import os
|
|
import pytablewriter
|
|
import pytablewriter
|
|
|
|
|
|
@@ -18,8 +19,7 @@ class Plugin(api.Plugin, api.IConfigurable, api.IRunable):
|
|
|
|
|
|
def declare_configuration(self, parser):
|
|
def declare_configuration(self, parser):
|
|
self.parser = parser
|
|
self.parser = parser
|
|
- parser.add_option("--output-dir", "--od", default='./metrixpp/',
|
|
|
|
- help="Set the output folder. [default: %default].")
|
|
|
|
|
|
+ parser.add_option("--output-dir", "--od", help="Set the output folder.")
|
|
parser.add_option("--format", "--ft", default='txt', choices=['txt', 'doxygen'],
|
|
parser.add_option("--format", "--ft", default='txt', choices=['txt', 'doxygen'],
|
|
help="Format of the output data. "
|
|
help="Format of the output data. "
|
|
"Possible values are 'txt' or 'doxygen' [default: %default]")
|
|
"Possible values are 'txt' or 'doxygen' [default: %default]")
|
|
@@ -106,78 +106,70 @@ class Plugin(api.Plugin, api.IConfigurable, api.IRunable):
|
|
|
|
|
|
return report_text
|
|
return report_text
|
|
|
|
|
|
- def create_doxygen_report(self, paths, output_dir, overview_data, data):
|
|
|
|
- exit_code = 1
|
|
|
|
|
|
+ def create_doxygen_report(self, paths, overview_data, data):
|
|
|
|
+ result_text = ""
|
|
|
|
+ result_text += "/* this file is autogenerated by metrix++ - changes will be overwritten */\n"
|
|
|
|
+ result_text += "/*!\n"
|
|
|
|
|
|
- if output_dir:
|
|
|
|
- os.makedirs(output_dir, exist_ok=True)
|
|
|
|
- with open(os.path.join(output_dir, "metrixpp.dox"), mode="w+") as file:
|
|
|
|
- file.write("/* this file is autogenerated by metrix++ - changes will be overwritten */\n")
|
|
|
|
- file.write("/*!\n")
|
|
|
|
|
|
+ result_text += "\\page metrix_overview Metrix overview\n\n"
|
|
|
|
|
|
- file.write("\\page metrix_overview Metrix overview\n\n")
|
|
|
|
|
|
+ result_text += "\\section metrix_sec Metrix Warnings\n\n"
|
|
|
|
+ result_text += "Metrix Limits exceeded {} times.\n\n".format(len(overview_data["warnings"]))
|
|
|
|
|
|
- file.write("\\section metrix_sec Metrix Warnings\n\n")
|
|
|
|
- file.write("Metrix Limits exceeded {} times.\n\n".format(len(overview_data["warnings"])))
|
|
|
|
-
|
|
|
|
- if len(overview_data["warnings"]) > 0:
|
|
|
|
- file.write("Warning list: \\ref metrix_warnings\n\n")
|
|
|
|
-
|
|
|
|
- for file_data in overview_data["matrix"]:
|
|
|
|
- file_data[0] = str(file_data[0]).replace("\\", "/")
|
|
|
|
|
|
+ if len(overview_data["warnings"]) > 0:
|
|
|
|
+ result_text += "Warning list: \\ref metrix_warnings\n\n"
|
|
|
|
|
|
- writer = pytablewriter.MarkdownTableWriter()
|
|
|
|
- writer.table_name = "metrix overview"
|
|
|
|
- writer.headers = overview_data["fields"]
|
|
|
|
- writer.value_matrix = overview_data["matrix"]
|
|
|
|
- writer.margin = 1
|
|
|
|
- writer.stream = file
|
|
|
|
- writer.write_table()
|
|
|
|
|
|
+ for file_data in overview_data["matrix"]:
|
|
|
|
+ file_data[0] = str(file_data[0]).replace("\\", "/")
|
|
|
|
|
|
- file.write("\n\n")
|
|
|
|
|
|
+ writer = pytablewriter.MarkdownTableWriter()
|
|
|
|
+ writer.table_name = "metrix overview"
|
|
|
|
+ writer.headers = overview_data["fields"]
|
|
|
|
+ writer.value_matrix = overview_data["matrix"]
|
|
|
|
+ writer.margin = 1
|
|
|
|
+ writer.stream = io.StringIO()
|
|
|
|
+ writer.write_table()
|
|
|
|
|
|
- for path in paths:
|
|
|
|
|
|
+ result_text += writer.stream.getvalue() + "\n\n"
|
|
|
|
|
|
- file.write("\\file {}\n\n".format(path))
|
|
|
|
|
|
+ for path in paths:
|
|
|
|
|
|
- writer = pytablewriter.MarkdownTableWriter()
|
|
|
|
- writer.table_name = "metrix"
|
|
|
|
- writer.headers = data[path]["file_fields"]
|
|
|
|
- writer.value_matrix = data[path]["file_matrix"]
|
|
|
|
- writer.margin = 1
|
|
|
|
- writer.stream = file
|
|
|
|
- writer.write_table()
|
|
|
|
|
|
+ result_text += "\\file {}\n\n".format(path)
|
|
|
|
|
|
- file.write("\n")
|
|
|
|
|
|
+ writer = pytablewriter.MarkdownTableWriter()
|
|
|
|
+ writer.table_name = "metrix"
|
|
|
|
+ writer.headers = data[path]["file_fields"]
|
|
|
|
+ writer.value_matrix = data[path]["file_matrix"]
|
|
|
|
+ writer.margin = 1
|
|
|
|
+ writer.stream = io.StringIO()
|
|
|
|
+ writer.write_table()
|
|
|
|
|
|
- for region in data[path]["region_matrix"]:
|
|
|
|
- if region[0] != "-" and region[0] != "__global__":
|
|
|
|
- region[0] = "\\ref " + region[0]
|
|
|
|
|
|
+ result_text += writer.stream.getvalue() + "\n"
|
|
|
|
|
|
- writer = pytablewriter.MarkdownTableWriter()
|
|
|
|
- writer.table_name = "region metrix"
|
|
|
|
- writer.headers = data[path]["region_fields"]
|
|
|
|
- writer.value_matrix = data[path]["region_matrix"]
|
|
|
|
- writer.margin = 1
|
|
|
|
- writer.stream = file
|
|
|
|
- writer.write_table()
|
|
|
|
|
|
+ for region in data[path]["region_matrix"]:
|
|
|
|
+ if region[0] != "-" and region[0] != "__global__":
|
|
|
|
+ region[0] = "\\ref " + region[0]
|
|
|
|
|
|
- file.write("\n")
|
|
|
|
|
|
+ writer = pytablewriter.MarkdownTableWriter()
|
|
|
|
+ writer.table_name = "region metrix"
|
|
|
|
+ writer.headers = data[path]["region_fields"]
|
|
|
|
+ writer.value_matrix = data[path]["region_matrix"]
|
|
|
|
+ writer.margin = 1
|
|
|
|
+ writer.stream = io.StringIO()
|
|
|
|
+ writer.write_table()
|
|
|
|
|
|
- # add warnings as list items
|
|
|
|
- for warning in data[path]["warnings"]:
|
|
|
|
- warning_text = self._get_warning_text(warning)
|
|
|
|
- file.write("\\xrefitem metrix_warnings \"Metrix Warning\" \"Metrix Warnings\" {}\n".format(warning_text))
|
|
|
|
|
|
+ result_text += writer.stream.getvalue() + "\n"
|
|
|
|
|
|
|
|
+ # add warnings as list items
|
|
|
|
+ for warning in data[path]["warnings"]:
|
|
|
|
+ warning_text = self._get_warning_text(warning)
|
|
|
|
+ result_text += "\\xrefitem metrix_warnings \"Metrix Warning\" \"Metrix Warnings\" {}\n".format(warning_text)
|
|
|
|
|
|
- file.write("\n\n")
|
|
|
|
|
|
+ result_text += "\n\n"
|
|
|
|
|
|
- file.write("*/\n")
|
|
|
|
- exit_code = 0
|
|
|
|
- else:
|
|
|
|
- logging.error("no output directory set")
|
|
|
|
|
|
+ result_text += "*/\n"
|
|
|
|
|
|
- return exit_code
|
|
|
|
|
|
+ return result_text
|
|
|
|
|
|
def run(self, args):
|
|
def run(self, args):
|
|
exit_code = 0
|
|
exit_code = 0
|
|
@@ -279,12 +271,19 @@ class Plugin(api.Plugin, api.IConfigurable, api.IRunable):
|
|
data)
|
|
data)
|
|
filename = "metrixpp.txt"
|
|
filename = "metrixpp.txt"
|
|
elif self.out_format == "doxygen":
|
|
elif self.out_format == "doxygen":
|
|
- exit_code = self.create_doxygen_report(paths,
|
|
|
|
- self.out_dir,
|
|
|
|
- overview_data,
|
|
|
|
- data)
|
|
|
|
|
|
+ result_text = self.create_doxygen_report(paths,
|
|
|
|
+ overview_data,
|
|
|
|
+ data)
|
|
|
|
+ filename = "metrixpp.dox"
|
|
else:
|
|
else:
|
|
logging.error("unknown or no output format set")
|
|
logging.error("unknown or no output format set")
|
|
- exit_code = 1
|
|
|
|
|
|
+ return 1
|
|
|
|
+
|
|
|
|
+ if self.out_dir:
|
|
|
|
+ os.makedirs(self.out_dir, exist_ok=True)
|
|
|
|
+ with open(os.path.join(self.out_dir, filename), "w+") as result_file:
|
|
|
|
+ result_file.write(result_text)
|
|
|
|
+ else:
|
|
|
|
+ print(result_text)
|
|
|
|
|
|
- return exit_code
|
|
|
|
|
|
+ return 0
|