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()