Spaces:
Runtime error
Runtime error
File size: 3,570 Bytes
1cc4e55 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | import gradio as gr
import re
def analyze_code(code, language):
"""
Função simples de análise de código - versão inicial
"""
feedback = f"🔍 **Análise de Código {language}**\n\n"
# Análises básicas
issues = []
suggestions = []
# Verificações genéricas
if len(code.strip()) == 0:
return "❌ Por favor, insira algum código para análise."
# Análise de complexidade básica
lines = code.split('\n')
if len(lines) > 50:
issues.append("Código muito longo - considere dividir em funções menores")
# Verificação de comentários
comment_count = sum(1 for line in lines if line.strip().startswith(('#', '//', '/*', '*')))
if comment_count < len(lines) * 0.1: # Menos de 10% de comentários
suggestions.append("Adicione mais comentários para melhorar a documentação")
# Linguagem específica
if language == "Python":
if "print(" in code and "def " in code:
suggestions.append("Considere usar logging em vez de print para funções")
if "except:" in code:
issues.append("Evite 'except:' genérico - especifique exceções")
elif language == "JavaScript":
if "==" in code and "===" not in code:
suggestions.append("Prefira '===' para comparação estrita")
if "var " in code:
issues.append("Use 'let' ou 'const' em vez de 'var'")
# Montar feedback
if issues:
feedback += "⚠️ **Problemas identificados:**\n"
for issue in issues:
feedback += f"• {issue}\n"
feedback += "\n"
if suggestions:
feedback += "💡 **Sugestões de melhoria:**\n"
for suggestion in suggestions:
feedback += f"• {suggestion}\n"
feedback += "\n"
if not issues and not suggestions:
feedback += "✅ Código parece bem estruturado! Bom trabalho!"
feedback += f"\n📊 **Estatísticas:** {len(lines)} linhas, {comment_count} comentários"
return feedback
# Interface Gradio
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("# 🤖 Code Review Assistant")
gr.Markdown("Cole seu código abaixo para receber feedback automático!")
with gr.Row():
with gr.Column():
code_input = gr.Textbox(
label="Seu Código",
placeholder="Cole seu código aqui...",
lines=15,
max_lines=20
)
language_dropdown = gr.Dropdown(
choices=["Python", "JavaScript", "Java", "Go", "C++", "TypeScript"],
label="Linguagem",
value="Python"
)
analyze_btn = gr.Button("Analisar Código 🚀")
with gr.Column():
output = gr.Textbox(
label="Feedback do Review",
lines=20,
max_lines=25,
interactive=False
)
# Conectar função ao botão
analyze_btn.click(
fn=analyze_code,
inputs=[code_input, language_dropdown],
outputs=output
)
# Exemplos
gr.Markdown("### 📝 Exemplos para testar:")
gr.Examples(
examples=[
["def soma(a, b):\n return a + b", "Python"],
["function getUser(id) {\n return users.find(u => u.id === id)\n}", "JavaScript"]
],
inputs=[code_input, language_dropdown]
)
# Iniciar a interface
if __name__ == "__main__":
demo.launch() |