code: def check(args, source_code, filename=None, options=None):
      
      if args is None:
          return []
      if options is not None:
          args += options
      if any(['pyflakes' in arg for arg in args]):
          #  Pyflakes requires an ending new line (pycodestyle don't! -- see Issue 1123)
          #  Note: this code is not used right now as it is faster to invoke 
          #  pyflakes in current Python interpreter (see `check_with_pyflakes` 
          #  function above) than calling it through a subprocess
          source_code += '\n'
      if filename is None:
          # Creating a temporary file because file does not exist yet 
          # or is not up-to-date
          tempfd = tempfile.NamedTemporaryFile(suffix=".py", delete=False)
          tempfd.write(source_code)
          tempfd.close()
          args.append(tempfd.name)
      else:
          args.append(filename)
      cmd = args[0]
      cmdargs = args[1:]
      proc = programs.run_program(cmd, cmdargs)
      output = proc.communicate()[0].strip().decode().splitlines()
      if filename is None:
          os.unlink(tempfd.name)
      results = []
      coding = encoding.get_coding(source_code)
      lines = source_code.splitlines()
      for line in output:
          lineno = int(re.search(r'(\:[\d]+\:)', line).group()[1:-1])
          try:
              text = to_text_string(lines[lineno-1], coding)
          except TypeError:
              text = to_text_string(lines[lineno-1])
          except UnicodeDecodeError:
              # Needed to handle UnicodeDecodeError and force the use
              # of chardet to detect enconding. See issue 6970
              coding = encoding.get_coding(source_code, force_chardet=True)
              text = to_text_string(lines[lineno-1], coding)
          if 'analysis:ignore' not in text:
              message = line[line.find(': ')+2:]
              results.append((message, lineno))
      return results
docs: Check source code with checker defined with *args* (list)
      Returns an empty list if checker is not installed