Sha256: e284adba13165ca4de070d576f8356b4ac62420e705900bd1d1cf2808db25d00

Contents?: true

Size: 1.66 KB

Versions: 12

Compression:

Stored size: 1.66 KB

Contents

require 'date'
require 'brakeman/checks/base_check'

# Not used directly - base check for EOLRails and EOLRuby
class Brakeman::EOLCheck < Brakeman::BaseCheck
  def check_eol_version library, eol_dates
    version = case library
              when :rails
                tracker.config.rails_version
              when :ruby
                tracker.config.ruby_version
              else
                raise 'Implement using tracker.config.gem_version'
              end

    eol_dates.each do |(start_version, end_version), eol_date|
      if version_between? start_version, end_version, version
        case
        when Date.today >= eol_date
          warn_about_unsupported_version library, eol_date, version
        when (Date.today + 30) >= eol_date
          warn_about_soon_unsupported_version library, eol_date, version, :medium
        when (Date.today + 60) >= eol_date
          warn_about_soon_unsupported_version library, eol_date, version, :low
        end

        break
      end
    end
  end

  def warn_about_soon_unsupported_version library, eol_date, version, confidence
    warn warning_type: 'Unmaintained Dependency',
      warning_code: :"pending_eol_#{library}",
      message: msg("Support for ", msg_version(version, library.capitalize), " ends on #{eol_date}"),
      confidence: confidence,
      gem_info: gemfile_or_environment
  end

  def warn_about_unsupported_version library, eol_date, version
    warn warning_type: 'Unmaintained Dependency',
      warning_code: :"eol_#{library}",
      message: msg("Support for ", msg_version(version, library.capitalize), " ended on #{eol_date}"),
      confidence: :high,
      gem_info: gemfile_or_environment
  end
end

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
brakeman-5.2.3 lib/brakeman/checks/eol_check.rb
brakeman-lib-5.2.3 lib/brakeman/checks/eol_check.rb
brakeman-min-5.2.3 lib/brakeman/checks/eol_check.rb
brakeman-5.2.2 lib/brakeman/checks/eol_check.rb
brakeman-lib-5.2.2 lib/brakeman/checks/eol_check.rb
brakeman-min-5.2.2 lib/brakeman/checks/eol_check.rb
brakeman-5.2.1 lib/brakeman/checks/eol_check.rb
brakeman-lib-5.2.1 lib/brakeman/checks/eol_check.rb
brakeman-min-5.2.1 lib/brakeman/checks/eol_check.rb
brakeman-5.2.0 lib/brakeman/checks/eol_check.rb
brakeman-lib-5.2.0 lib/brakeman/checks/eol_check.rb
brakeman-min-5.2.0 lib/brakeman/checks/eol_check.rb