module Octokit::Client::CodeScanning

Methods for the code scanning alerts API

@see docs.github.com/rest/code-scanning

Public Instance Methods

delete_code_scanning_analysis(repo, analysis_id, options = {}) click to toggle source

Delete a specified code scanning analysis from a repository

@param repo [Integer, String, Repository, Hash] A GitHub repository @param analysis_id [Integer] ID of the code scanning analysis

@return [Sawyer::Resource] Next Code Scanning Analysis Information @see docs.github.com/en/rest/code-scanning/code-scanning#delete-a-code-scanning-analysis-from-a-repository

# File lib/octokit/client/code_scanning.rb, line 67
def delete_code_scanning_analysis(repo, analysis_id, options = {})
  delete "#{Repository.path repo}/code-scanning/analyses/#{analysis_id}", options
end
get_code_scanning_alert(repo, alert_number, options = {}) click to toggle source

Gets a single code scanning alert

@param repo [Integer, String, Repository, Hash] A GitHub repository @param alert_number [Integer] The number that identifies an alert

@return [Sawyer::Resource] Code Scanning Alert @see docs.github.com/en/rest/code-scanning/code-scanning#get-a-code-scanning-alert

# File lib/octokit/client/code_scanning.rb, line 126
def get_code_scanning_alert(repo, alert_number, options = {})
  get "#{Repository.path repo}/code-scanning/alerts/#{alert_number}", options
end
get_code_scanning_analysis(repo, analysis_id, options = {}) click to toggle source

Get a code scanning analysis for a repository

@param repo [Integer, String, Repository, Hash] A GitHub repository @param analysis_id [Integer] ID of the code scanning analysis

@return [Sawyer::Resource] Code Scanning Analysis @see docs.github.com/en/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository

# File lib/octokit/client/code_scanning.rb, line 78
def get_code_scanning_analysis(repo, analysis_id, options = {})
  get "#{Repository.path repo}/code-scanning/analyses/#{analysis_id}", options
end
get_code_scanning_default_config(repo, options = {}) click to toggle source

Get Code Scanning Default Configuration

@param repo [Integer, String, Repository, Hash] A GitHub repository

@return [Sawyer::Resource] CodeQl Default Setup Configuration Information @see docs.github.com/en/rest/code-scanning/code-scanning#get-a-code-scanning-default-setup-configuration

# File lib/octokit/client/code_scanning.rb, line 35
def get_code_scanning_default_config(repo, options = {})
  get "#{Repository.path repo}/code-scanning/default-setup", options
end
get_codeql_database_for_repo(repo, language, options = {}) click to toggle source

Gets a CodeQL database for a language in a repository

@param repo [Integer, String, Repository, Hash] A GitHub repository @param language [String]

@return [Sawyer::Resource] CodeQl Default Setup Configuration Information @see docs.github.com/en/rest/code-scanning/code-scanning#get-a-codeql-database-for-a-repository

# File lib/octokit/client/code_scanning.rb, line 46
def get_codeql_database_for_repo(repo, language, options = {})
  get "#{Repository.path repo}/code-scanning/codeql/databases/#{language}", options
end
get_sarif_upload_information(repo, sarif_id, options = {}) click to toggle source

Gets information about a SARIF upload

@param repo [Integer, String, Repository, Hash] A GitHub repository @param sarif_id [String] The SARIF ID obtained after uploading

@return [Sawyer::Resource] SARIF upload information @see docs.github.com/rest/code-scanning#get-information-about-a-sarif-upload

# File lib/octokit/client/code_scanning.rb, line 174
def get_sarif_upload_information(repo, sarif_id, options = {})
  get "#{Repository.path repo}/code-scanning/sarifs/#{sarif_id}", options
end
list_code_scanning_alerts_for_org(org, options = {}) click to toggle source

List code scanning alerts for an organization

@param org [String] A GitHub organization

@return [Array] Code Scanning Alert information @see docs.github.com/en/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-an-organization

# File lib/octokit/client/code_scanning.rb, line 146
def list_code_scanning_alerts_for_org(org, options = {})
  paginate "orgs/#{org}/code-scanning/alerts", options
end
list_code_scanning_alerts_for_repo(repo, options = {}) click to toggle source

List code scanning alerts for a repository

@param org [String] A GitHub organization

@return [Array] Code Scanning Alert information @see docs.github.com/en/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-a-repository

# File lib/octokit/client/code_scanning.rb, line 136
def list_code_scanning_alerts_for_repo(repo, options = {})
  paginate "#{Repository.path repo}/code-scanning/alerts", options
end
list_code_scanning_analysis(repo, options = {}) click to toggle source

List code scanning analyses for a repository

@param repo [Integer, String, Repository, Hash] A GitHub repository

@return [Array] List of Code Scanning Analyses @see docs.github.com/en/rest/code-scanning/code-scanning#list-code-scanning-analyses-for-a-repository

# File lib/octokit/client/code_scanning.rb, line 88
def list_code_scanning_analysis(repo, options = {})
  paginate "#{Repository.path repo}/code-scanning/analyses", options
end
list_codeql_database_for_repo(repo, options = {}) click to toggle source

Lists the CodeQL databases that are available in a repository

@param repo [Integer, String, Repository, Hash] A GitHub repository

@return [Array] List of CodeQL Databases @see docs.github.com/en/rest/code-scanning/code-scanning#list-codeql-databases-for-a-repository

# File lib/octokit/client/code_scanning.rb, line 56
def list_codeql_database_for_repo(repo, options = {})
  get "#{Repository.path repo}/code-scanning/codeql/databases", options
end
list_instances_of_code_scanning_alert(repo, alert_number, options = {}) click to toggle source

List instances of a code scanning alert

@param repo [Integer, String, Repository, Hash] A GitHub repository @param alert_number [Integer] The number that identifies an alert

@return [Array] List of Code Scanning Alerts @see docs.github.com/en/rest/code-scanning/code-scanning#list-instances-of-a-code-scanning-alert

# File lib/octokit/client/code_scanning.rb, line 99
def list_instances_of_code_scanning_alert(repo, alert_number, options = {})
  paginate "#{Repository.path repo}/code-scanning/alerts/#{alert_number}/instances", options
end
update_code_scanning_alert(repo, alert_number, state, reason, comment = nil, options = {}) click to toggle source

Update a code scanning alert

@param repo [Integer, String, Repository, Hash] A GitHub repository @param alert_number [Integer] The number that identifies an alert @param state [String] The reason for dismissing or closing the alert. Required when the state is dismissed

@return [Sawyer::Resource] Code Scanning Alert information @see docs.github.com/en/rest/code-scanning/code-scanning#update-a-code-scanning-alert

# File lib/octokit/client/code_scanning.rb, line 111
def update_code_scanning_alert(repo, alert_number, state, reason, comment = nil, options = {})
  options[:state] = state
  options[:dismissed_reason] = reason
  options[:dismissed_comment] = comment if comment

  patch "#{Repository.path repo}/code-scanning/alerts/#{alert_number}", options
end
update_code_scanning_default_config(repo, state, query_suite = nil, languages = nil, options = {}) click to toggle source

Updates a code scanning default setup configuration

@param repo [Integer, String, Repository, Hash] A GitHub repository @param state [String] The desired state of code scanning default setup @param query_suite [String] CodeQL query suite to be used @param languages [Array] List of CodeQL languages to be analyzed

@return [Sawyer::Resource] Action Run information @see docs.github.com/en/rest/code-scanning/code-scanning#update-a-code-scanning-default-setup-configuration

# File lib/octokit/client/code_scanning.rb, line 21
def update_code_scanning_default_config(repo, state, query_suite = nil, languages = nil, options = {})
  options[:state] = state
  options[:query_suite] = query_suite if query_suite
  options[:languages] = languages if languages

  patch "#{Repository.path repo}/code-scanning/default-setup", options
end
upload_sarif_data(repo, file, sha, ref, options = {}) click to toggle source

Uploads SARIF data containing the results of a code scanning analysis

@param repo [Integer, String, Repository, Hash] A GitHub repository @param file [String] Path to the SARIF file to upload @param sha [String] The SHA of the commit to which the analysis you are uploading relates @param ref [String] The full Git reference, formatted as ‘refs/heads/<branch name>`, `refs/pull/<number>/merge`, or `refs/pull/<number>/head`

@return [Sawyer::Resource] SARIF upload information @see docs.github.com/rest/code-scanning#upload-an-analysis-as-sarif-data

# File lib/octokit/client/code_scanning.rb, line 159
def upload_sarif_data(repo, file, sha, ref, options = {})
  options[:sarif] = compress_sarif_data(file)
  options[:commit_sha] = sha
  options[:ref] = ref

  post "#{Repository.path repo}/code-scanning/sarifs", options
end

Private Instance Methods

compress_sarif_data(file) click to toggle source
# File lib/octokit/client/code_scanning.rb, line 180
def compress_sarif_data(file)
  Tempfile.create('sarif.gz') do |tempfile|
    Zlib::GzipWriter.open(tempfile) do |gz_file|
      gz_file.write File.binread(file)
    end
    [tempfile.read].pack('m0') # Base64.strict_encode64
  end
end