def fail(*failures, **options)
      sticky = options.fetch(:sticky, false)
      file = options.fetch(:file, nil)
      line = options.fetch(:line, nil)

      failures.flatten.each do |failure|
        next if should_ignore_violation(failure)
        @errors << Violation.new(failure, sticky, file, line) if failure
      end
    end
def fail(*failures, **options)
      sticky = options.fetch(:sticky, false)
      file = options.fetch(:file, nil)
      line = options.fetch(:line, nil)

      failures.flatten.each do |failure|
        next if should_ignore_violation(failure)
        @errors << Violation.new(failure, sticky, file, line) if failure
      end
    end
@!group Core
 Declares a CI blocking error

 @param    [String, Array<String>] message
           The message to present to the user
 @param    [Boolean] sticky
           Whether the message should be kept after it was fixed,
           defaults to `false`.
 @param    [String] file
           Optional. Path to the file that the message is for.
 @param    [String] line
           Optional. The line in the file to present the message in.
 @return   [void]