Spaces:
Runtime error
Runtime error
| 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() |