# frozen_string_literal: true class PyLintAdapter < TestingFrameworkAdapter REGEXP = %r{Your code has been rated at (-?\d+\.?\d*)/(\d+\.?\d*)} ASSERTION_ERROR_REGEXP = /^(.*?\.py):(\d+):(.*?)\(([^,]*?), ([^,]*?),([^,]*?)\) ((?>.|\r|\n)*?)(? e # A key was not defined or something really bad happened Sentry.set_extras(assessment) Sentry.capture_exception(e) assessment end def self.get_t(key, default) # key might be "linter.#{severity}.#{name}.#{key}.#{value}" # or something like "linter.#{severity}.#{name}.replacement" translation = I18n.t(key, default:) cleaned_key = key.delete_suffix(".#{default}") # Remove any custom prefix, might have no effect keys = cleaned_key.split('.') final_key = keys.pop log_missing = if %w[actual suggestion context line].include?(final_key) # SyntaxErrors: These are dynamic and won't get translated false else # Read config key I18n.t(keys.append('log_missing').join('.'), default: false) end Sentry.capture_message({key: cleaned_key, default:}.to_json) if translation == default && log_missing translation end end