Daniel251 commited on
Commit
1cc4e55
·
verified ·
1 Parent(s): c72da2b

Create app.py

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