Class: Docscribe::CLI::Formatters::Sarif

Inherits:
Object
  • Object
show all
Defined in:
lib/docscribe/cli/formatters/sarif.rb

Overview

Output formatter producing SARIF 2.1 JSON.

SARIF (Static Analysis Results Interchange Format) is a standard format for static analysis tools. This formatter produces output compatible with GitHub Code Scanning, VS Code SARIF viewer, etc.

stdout: complete SARIF 2.1 document with all findings. stderr: progress markers only (same as text mode).

Constant Summary collapse

SEVERITY_MAP =
{
  missing_param: 'note',
  missing_return: 'note',
  missing_raise: 'note',
  missing_visibility: 'note',
  missing_module_function_note: 'note',
  insert_full_doc_block: 'note',
  unsorted_tags: 'note',
  updated_param: 'warning',
  updated_return: 'warning'
}.freeze
COP_NAME_MAP =
{
  missing_param: 'Docscribe/MissingParam',
  missing_return: 'Docscribe/MissingReturn',
  missing_raise: 'Docscribe/MissingRaise',
  missing_visibility: 'Docscribe/MissingVisibility',
  missing_module_function_note: 'Docscribe/MissingModuleFunctionNote',
  insert_full_doc_block: 'Docscribe/MissingDocBlock',
  unsorted_tags: 'Docscribe/UnsortedTags',
  updated_param: 'Docscribe/UpdatedParam',
  updated_return: 'Docscribe/UpdatedReturn'
}.freeze
SARIF_SCHEMA =
'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/' \
'master/Schemata/sarif-schema-2.1.0.json'

Instance Method Summary collapse

Instance Method Details

#format_check_summary(state:, options:) ⇒ void

This method returns an undefined value.

Parameters:

  • state (Docscribe::CLI::Formatters::state)
  • options (Docscribe::CLI::Formatters::opts)


48
49
50
# File 'lib/docscribe/cli/formatters/sarif.rb', line 48

def format_check_summary(state:, options:)
  puts JSON.generate(build_sarif_document(state, options[:format]))
end

#format_write_summary(state:, options:) ⇒ void

This method returns an undefined value.

Parameters:

  • state (Docscribe::CLI::Formatters::state)
  • options (Docscribe::CLI::Formatters::opts)


55
56
57
# File 'lib/docscribe/cli/formatters/sarif.rb', line 55

def format_write_summary(state:, options:)
  puts JSON.generate(build_sarif_document(state, options[:format]))
end