<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run(path, code, params=None, ignore=None, select=None, **meta):
 """Pylint code checking. :return list: List of errors. """

        logger.debug('Start pylint')

        clear_cache = params.pop('clear_cache', False)
        if clear_cache:
            MANAGER.astroid_cache.clear()

        class Reporter(BaseReporter):

            def __init__(self):
                self.errors = []
                super(Reporter, self).__init__()

            def _display(self, layout):
                pass

            def handle_message(self, msg):
                self.errors.append(dict(
                    lnum=msg.line,
                    col=msg.column,
                    text="%s %s" % (msg.msg_id, msg.msg),
                    type=msg.msg_id[0]
                ))

        params = _Params(ignore=ignore, select=select, params=params)
        logger.debug(params)

        reporter = Reporter()

        try:
            Run([path] + params.to_attrs(), reporter=reporter, do_exit=False)
        except TypeError:
            # support pylint<2.0
            # see https://github.com/PyCQA/pylint/commit/4210ef9b8c5d9e7b33ff0542683f18b8031193fa
            import pylint
            if pylint.__version__.split('.')[0] != '1':
                raise
            Run([path] + params.to_attrs(), reporter=reporter, exit=False)

        return reporter.errors