docs: def _check_1st_line(line, **kwargs):
      """First line check.
  
      Check that the first line has a known component name followed by a colon
      and then a short description of the commit.
  
      :param line: first line
      :type line: str
      :param components: list of known component names
      :type line: list
      :param max_first_line: maximum length of the first line
      :type max_first_line: int
      :return: errors as in (code, line number, *args)
      :rtype: list
  
      """
      components = kwargs.get("components", ())
      max_first_line = kwargs.get("max_first_line", 50)
  
      errors = []
      lineno = 1
      if len(line) > max_first_line:
          errors.append(("M190", lineno, max_first_line, len(line)))
  
      if line.endswith("."):
          errors.append(("M191", lineno))
  
      if ':' not in line:
          errors.append(("M110", lineno))
      else:
          component, msg = line.split(':', 1)
          if component not in components:
              errors.append(("M111", lineno, component))
  
      return errors