Example #1
0
 def _output(self, results):
     b = PrintBuffer()
     b.separator()
     b.add_green("%s passed!\n" % self.title)
     b.add("Elapsed time: %.2fs\n" % results['elapsed_time'])
     b.separator()
     return str(b)
Example #2
0
 def launch_instructions(self, result_dir):
     b = PrintBuffer()
     b.separator()
     b.add("Full details can be seen in a browser by running:\n")
     b.add("    $ %s %s\n" % (self.binary_path, result_dir))
     b.separator()
     return str(b)
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     r = results
     b.separator()
     b.add("Took %.2f seconds to analyze with scan-build\n" %
           r['elapsed_time'])
     b.add("Found %d issues:\n" % len(r['issues']))
     b.separator()
     return str(b)
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     b.add(super()._output(results))
     r = results
     for issue in r['issues']:
         b.add("An issue was found with ")
         b.add_red("%s" % issue['file_path'])
         b.add('\n\n%s\n\n' % issue['evaluation']['description'])
         b.add('Info for resolution:\n')
         b.add(issue['evaluation']['resolution'])
         b.separator()
     if len(r['issues']) == 0:
         b.add_green("No copyright header issues found!\n")
     return str(b)
Example #5
0
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     r = results
     b.separator()
     b.add("%4d files tracked in repo\n" % r['tracked_files'])
     b.add("%4d files in scope according to .bitcoin_maintainer_tools.json "
           "settings\n" % r['files_in_scope'])
     b.add("%4d files examined according to listed targets\n" %
           r['files_targeted'])
     b.add("%4d parallel jobs for computing analysis\n" % r['jobs'])
     b.separator()
     return str(b)
Example #6
0
 def _exit_if_parameters_unsupported(self):
     if self.force:
         return
     rejected_parameters = self.clang_format.style.rejected_parameters
     if len(rejected_parameters) > 0:
         b = PrintBuffer()
         b.add_red("\nERROR: ")
         b.add("clang-format version %s does not support all parameters "
               "given in\n%s\n\n" %
               (self.clang_format.binary_version, self.clang_format.style))
         b.add("Unsupported parameters:\n")
         for parameter in rejected_parameters:
             b.add("\t%s\n" % parameter)
         # The applied formating has subtle differences that vary between
         # major releases of clang-format. The recommendation should
         # probably follow the latest widely-available stable release.
         repo_info = self['repository'].repo_info
         b.add(
             "\nUsing clang-format version %s or higher is recommended\n" %
             repo_info['clang_format_recommended']['min_version'])
         b.add("Use the --force option to override and proceed anyway.\n\n")
         b.flush()
         sys.exit("*** missing clang-format support.")
Example #7
0
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     b.add(super()._output(results))
     r = results
     for f in r['failures']:
         b.add("A code format issue was detected in ")
         b.add_red("%s\n\n" % f['file_path'])
         score = FileStyleScore(f['lines_before'], f['lines_added'],
                                f['lines_removed'], f['lines_unchanged'],
                                f['lines_after'])
         b.add(str(score))
         b.separator()
     if len(r['failures']) == 0:
         b.add_green("No format issues found!\n")
     else:
         b.add_red("These files can be formatted by running:\n")
         b.add("$ clang_format.py format [option [option ...]] "
               "[target [target ...]]\n")
     b.separator()
     return str(b)
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     b.add(super()._output(results))
     r = results
     issue_no = 0
     for issue in r['issues']:
         b.add("%d: %s:%d:%d - %s\n" %
               (issue_no, issue['file'], issue['line'], issue['col'],
                issue['description']))
         issue_no = issue_no + 1
     if len(r['issues']) > 0:
         viewer = self.scan_build.viewer
         b.add(viewer.launch_instructions(r['results_directory']))
     return str(b)
Example #9
0
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     b.add(super()._output(results))
     r = results
     for issue in r['issues']:
         b.separator()
         b.add("An issue was found with ")
         b.add_red("%s\n" % issue['file_path'])
         b.add('Rule: "%s"\n\n' % issue['rule_title'])
         b.add('line %d:\n' % issue['line']['number'])
         b.add("%s" % issue['line']['context'])
         b.add(' ' * (issue['line']['character'] - 1))
         b.add_red("^\n")
     b.separator()
     if len(r['issues']) == 0:
         b.add_green("No style issues found!\n")
     else:
         b.add_red("These issues can be fixed automatically by running:\n")
         b.add("$ basic_style.py fix [target [target ...]]\n")
     b.separator()
     return str(b)
Example #10
0
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     b.add(super()._output(results))
     r = results
     b.add("%-32s %8.02fs\n" % ("Elapsed time:", r['elapsed_time']))
     b.separator()
     for title, evaluation in sorted(r['rule_evaluation'].items()):
         b.add('"%s":\n' % title)
         b.add('  %-30s %s\n' % ("Applies to:", evaluation['extensions']))
         b.add('  %-30s %8d\n' % ("Files examined:",
                                  evaluation['examined']))
         b.add('  %-30s %8d\n' % ("Occurrences of issue:",
                                  evaluation['occurrences']))
         b.add('  %-30s %8d\n\n' % ("Files with issue:",
                                    evaluation['files']))
     b.separator()
     b.add("%-32s %8d\n" % ("Files scoring 100%", r['matching']))
     b.add("%-32s %8d\n" % ("Files scoring <100%", r['not_matching']))
     b.separator()
     b.add("Overall scoring:\n\n")
     score = FileStyleScore(r['lines_before'], r['lines_added'],
                            r['lines_removed'], r['lines_unchanged'],
                            r['lines_after'])
     b.add(str(score))
     b.separator()
     return str(b)
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     r = results
     b.add(super()._output(results))
     b.add("%-70s %6d\n" %
           ("Files expected to have header:", r['hdr_expected']))
     b.add("%-70s %6d\n" %
           ("Files not expected to have header:", r['no_hdr_expected']))
     b.add("%-70s %6d\n" %
           ("Files expected to have 'copyright' occurrence outside header:",
            r['other_copyright_expected']))
     b.add("%-70s %6d\n" %
           ("Files not expected to have 'copyright' occurrence outside "
            "header:", r['no_other_copyright_expected']))
     b.add("%-70s %6d\n" % ("Files passed:", r['passed']))
     b.add("%-70s %6d\n" % ("Files failed:", r['failed']))
     b.separator()
     for key, value in sorted(r['issues'].items()):
         b.add("%-70s %6d\n" % ('"' + key + '":', value))
     b.separator()
     return str(b)
Example #12
0
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     b.add(super()._output(results))
     r = results
     b.add("%-30s %s\n" % ("clang-format bin:", r['clang_format_path']))
     b.add("%-30s %s\n" %
           ("clang-format version:", r['clang_format_version']))
     b.add("%-30s %s\n" % ("Using style in:", r['clang_style_path']))
     b.separator()
     if len(r['rejected_parameters']) > 0:
         b.add_red("WARNING")
         b.add(" - This version of clang-format does not support the "
               "following style\nparameters, so they were not used:\n\n")
         for param in r['rejected_parameters']:
             b.add("%s\n" % param)
         b.separator()
     b.add("%-30s %.02fs\n" % ("Elapsed time:", r['elapsed_time']))
     if len(r['slow_diffs']) > 0:
         b.add("Slowest diffs:\n")
         for slow in r['slow_diffs']:
             b.add("%6.02fs for %s\n" %
                   (slow['diff_time'], slow['file_path']))
     b.separator()
     b.add("%-30s %4d\n" % ("Files scoring 100%:", r['matching']))
     b.add("%-30s %4d\n" % ("Files scoring <100%:", r['not_matching']))
     b.add("%-30s %s\n" % ("Formatted Content MD5:", r['formatted_md5']))
     b.separator()
     for score_range in reversed(sorted(r['files_in_ranges'].keys())):
         b.add("%-30s %4d\n" % ("Files scoring %s:" % score_range,
                                r['files_in_ranges'][score_range]))
     b.separator()
     b.add("Overall scoring:\n\n")
     score = FileStyleScore(r['lines_before'], r['lines_added'],
                            r['lines_removed'], r['lines_unchanged'],
                            r['lines_after'])
     b.add(str(score))
     b.separator()
     return str(b)
 def _output(self, results):
     if self.json:
         return super()._output(results)
     b = PrintBuffer()
     b.add(super()._output(results))
     r = results
     for issue in r['issues']:
         b.add("An issue has been found in ")
         b.add_red("%s:%d:%d\n" %
                   (issue['file'], issue['line'], issue['col']))
         b.add("Type:         %s\n" % issue['type'])
         b.add("Description:  %s\n\n" % issue['description'])
         event_no = 0
         for event in issue['events']:
             b.add("%d: " % event_no)
             b.add("%s:%d:%d - " %
                   (event['file'], event['line'], event['col']))
             b.add("%s\n" % event['message'])
             event_no = event_no + 1
         b.separator()
     if len(r['issues']) == 0:
         b.add_green("No static analysis issues found!\n")
         b.separator()
     else:
         viewer = self.scan_build.viewer
         b.add(viewer.launch_instructions(r['results_directory']))
     return str(b)