Skip to content

Commit d7b275e

Browse files
committed
Reduce cyclomatic complexity
Flake8 is configured to enforce a cyclomatic complexity limit of 10 on the project. The recent changes caused an increase of the cyclomatic complexity in ReportSizeDeltas.generate_report to 12. In order to reduce this, code was moved into dedicated functions.
1 parent c2bbeca commit d7b275e

File tree

2 files changed

+302
-92
lines changed

2 files changed

+302
-92
lines changed

reportsizedeltas/reportsizedeltas.py

Lines changed: 108 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -328,105 +328,15 @@ def generate_report(self, sketches_reports):
328328

329329
# Generate summary report data
330330
summary_report_data = [[fqbn_column_heading]]
331-
row_number = 0
332331
for fqbns_data in sketches_reports:
333332
for fqbn_data in fqbns_data[self.ReportKeys.boards]:
334-
row_number += 1
335-
# Add a row to the report
336-
row = ["" for _ in range(len(summary_report_data[0]))]
337-
row[0] = fqbn_data[self.ReportKeys.board]
338-
summary_report_data.append(row)
339-
340-
# Populate the row with data
341-
for size_data in fqbn_data[self.ReportKeys.sizes]:
342-
# Determine column number for this memory type
343-
column_number = get_report_column_number(
344-
report=summary_report_data,
345-
column_heading=size_data[self.ReportKeys.name]
346-
)
347-
348-
# Add the memory data to the cell
349-
if self.ReportKeys.delta in size_data:
350-
# Absolute data
351-
summary_report_data[row_number][column_number] = (
352-
self.get_summary_value(
353-
show_emoji=True,
354-
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][
355-
self.ReportKeys.minimum],
356-
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][
357-
self.ReportKeys.maximum]
358-
)
359-
)
360-
361-
# Relative data
362-
summary_report_data[row_number][column_number + 1] = (
363-
self.get_summary_value(
364-
show_emoji=False,
365-
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][
366-
self.ReportKeys.minimum],
367-
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][
368-
self.ReportKeys.maximum]
369-
)
370-
)
371-
else:
372-
# Absolute data
373-
summary_report_data[row_number][column_number] = (
374-
self.get_summary_value(
375-
show_emoji=True,
376-
minimum=self.not_applicable_indicator,
377-
maximum=self.not_applicable_indicator
378-
)
379-
)
380-
381-
# Relative data
382-
summary_report_data[row_number][column_number + 1] = (
383-
self.get_summary_value(
384-
show_emoji=False,
385-
minimum=self.not_applicable_indicator,
386-
maximum=self.not_applicable_indicator
387-
)
388-
)
333+
self.add_summary_report_row(summary_report_data, fqbn_data)
389334

390335
# Generate detailed report data
391336
full_report_data = [[fqbn_column_heading]]
392-
row_number = 0
393337
for fqbns_data in sketches_reports:
394338
for fqbn_data in fqbns_data[self.ReportKeys.boards]:
395-
row_number += 1
396-
# Add a row to the report
397-
row = ["" for _ in range(len(full_report_data[0]))]
398-
row[0] = fqbn_data[self.ReportKeys.board]
399-
full_report_data.append(row)
400-
401-
# Populate the row with data
402-
for sketch in fqbn_data[self.ReportKeys.sketches]:
403-
for size_data in sketch[self.ReportKeys.sizes]:
404-
# Determine column number for this memory type
405-
column_number = get_report_column_number(
406-
report=full_report_data,
407-
column_heading=(
408-
sketch[self.ReportKeys.name] + "<br>"
409-
+ size_data[self.ReportKeys.name]
410-
)
411-
)
412-
413-
# Add the memory data to the cell
414-
if self.ReportKeys.delta in size_data:
415-
# Absolute
416-
full_report_data[row_number][column_number] = (
417-
size_data[self.ReportKeys.delta][self.ReportKeys.absolute]
418-
)
419-
420-
# Relative
421-
full_report_data[row_number][column_number + 1] = (
422-
size_data[self.ReportKeys.delta][self.ReportKeys.relative]
423-
)
424-
else:
425-
# Absolute
426-
full_report_data[row_number][column_number] = self.not_applicable_indicator
427-
428-
# Relative
429-
full_report_data[row_number][column_number + 1] = self.not_applicable_indicator
339+
self.add_detailed_report_row(full_report_data, fqbn_data)
430340

431341
# Add comment heading
432342
report_markdown = self.report_key_beginning + sketches_reports[0][self.ReportKeys.commit_hash] + "**\n\n"
@@ -460,6 +370,112 @@ def generate_report(self, sketches_reports):
460370
logger.debug("Report:\n" + report_markdown)
461371
return report_markdown
462372

373+
def add_summary_report_row(self, report_data, fqbn_data):
374+
"""Add a row to the summary report.
375+
376+
Keyword arguments:
377+
report_data -- the report to add the row to
378+
right_directory -- the data used to populate the row
379+
"""
380+
row_number = len(report_data)
381+
# Add a row to the report
382+
row = ["" for _ in range(len(report_data[0]))]
383+
row[0] = fqbn_data[self.ReportKeys.board]
384+
report_data.append(row)
385+
386+
# Populate the row with data
387+
for size_data in fqbn_data[self.ReportKeys.sizes]:
388+
# Determine column number for this memory type
389+
column_number = get_report_column_number(
390+
report=report_data,
391+
column_heading=size_data[self.ReportKeys.name]
392+
)
393+
394+
# Add the memory data to the cell
395+
if self.ReportKeys.delta in size_data:
396+
# Absolute data
397+
report_data[row_number][column_number] = (
398+
self.get_summary_value(
399+
show_emoji=True,
400+
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][
401+
self.ReportKeys.minimum],
402+
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][
403+
self.ReportKeys.maximum]
404+
)
405+
)
406+
407+
# Relative data
408+
report_data[row_number][column_number + 1] = (
409+
self.get_summary_value(
410+
show_emoji=False,
411+
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][
412+
self.ReportKeys.minimum],
413+
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][
414+
self.ReportKeys.maximum]
415+
)
416+
)
417+
else:
418+
# Absolute data
419+
report_data[row_number][column_number] = (
420+
self.get_summary_value(
421+
show_emoji=True,
422+
minimum=self.not_applicable_indicator,
423+
maximum=self.not_applicable_indicator
424+
)
425+
)
426+
427+
# Relative data
428+
report_data[row_number][column_number + 1] = (
429+
self.get_summary_value(
430+
show_emoji=False,
431+
minimum=self.not_applicable_indicator,
432+
maximum=self.not_applicable_indicator
433+
)
434+
)
435+
436+
def add_detailed_report_row(self, report_data, fqbn_data):
437+
"""Add a row to the detailed report.
438+
439+
Keyword arguments:
440+
report_data -- the report to add the row to
441+
right_directory -- the data used to populate the row
442+
"""
443+
row_number = len(report_data)
444+
# Add a row to the report
445+
row = ["" for _ in range(len(report_data[0]))]
446+
row[0] = fqbn_data[self.ReportKeys.board]
447+
report_data.append(row)
448+
449+
# Populate the row with data
450+
for sketch in fqbn_data[self.ReportKeys.sketches]:
451+
for size_data in sketch[self.ReportKeys.sizes]:
452+
# Determine column number for this memory type
453+
column_number = get_report_column_number(
454+
report=report_data,
455+
column_heading=(
456+
sketch[self.ReportKeys.name] + "<br>"
457+
+ size_data[self.ReportKeys.name]
458+
)
459+
)
460+
461+
# Add the memory data to the cell
462+
if self.ReportKeys.delta in size_data:
463+
# Absolute
464+
report_data[row_number][column_number] = (
465+
size_data[self.ReportKeys.delta][self.ReportKeys.absolute]
466+
)
467+
468+
# Relative
469+
report_data[row_number][column_number + 1] = (
470+
size_data[self.ReportKeys.delta][self.ReportKeys.relative]
471+
)
472+
else:
473+
# Absolute
474+
report_data[row_number][column_number] = self.not_applicable_indicator
475+
476+
# Relative
477+
report_data[row_number][column_number + 1] = self.not_applicable_indicator
478+
463479
def get_summary_value(self, show_emoji, minimum, maximum):
464480
"""Return the Markdown formatted text for a memory change data cell in the report table.
465481

0 commit comments

Comments
 (0)