1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import json
- import os
- import tempfile
- from typing import Optional
- from fastapi import APIRouter
- from fastapi import Depends
- from app import schemas
- from utils.sx_time import sxtimeit
- from utils.sx_web import web_try
- from pylint import epylint
- import sqlfluff
- router = APIRouter(
- prefix="/jpt/code_check",
- tags=["code_check-代码校验"],
- )
- @router.post("/")
- @web_try()
- @sxtimeit
- def code_check(code: str, code_type: str):
- res = []
- if code_type == "python":
- file = tempfile.NamedTemporaryFile(delete=False, mode='w')
- file.write(code)
- file.close()
- options = ' '.join([
- file.name,
- '--output-format', 'json',
- ])
- (lint_stdout, lint_stderr) = epylint.py_run(return_std=True, command_options=options)
- os.remove(file.name)
- res = json.loads(lint_stdout.getvalue())
- else:
- lint_out = sqlfluff.lint(code,'ansi')
- res = [l for l in lint_out if l['code'] == 'PRS']
- return res
|