示例#1
0
def _validate(ls: LanguageServer, uri: str, script: Script = None):
    if script is None:
        script = get_script(ls, uri)

    # Jedi
    result = [
        types.Diagnostic(
            range=types.Range(start=types.Position(line=x.line - 1,
                                                   character=x.column),
                              end=types.Position(line=x.until_line - 1,
                                                 character=x.until_column)),
            message=x.get_message(),
            severity=types.DiagnosticSeverity.Error,
            source='jedi') for x in script.get_syntax_errors()
    ]
    if result:
        ls.publish_diagnostics(uri, result)
        return

    # pyflakes
    pyflakes_check(script._code, script.path,
                   PyflakesReporter(result, script, config['pyflakes_errors']))

    # pycodestyle
    codestyleopts = get_pycodestyle_options(ls, uri)
    CodestyleChecker(script.path, script._code.splitlines(True), codestyleopts,
                     CodestyleReport(codestyleopts, result)).check_all()

    # mypy
    if config['mypy_enabled']:
        try:
            _mypy_check(ls, uri, script, result)
        except Exception as e:
            ls.show_message(f'mypy check error: {e}',
                            types.MessageType.Warning)

    ls.publish_diagnostics(uri, result)