AI Code Analyzer Pro

🤖 AI Code Analyzer Pro

Професійний інструмент для аналізу та оптимізації коду з використанням штучного інтелекту

📝 Аналіз коду

📊 Результати аналізу

Вставте код та натисніть “Проаналізувати код” для отримання детального аналізу

`, css: `Вставте ваш CSS код тут для аналізу... Приклад: body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background-color: #f5f5f5; } .container { max-width: 1200px; margin: 0 auto; background: white; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }` }; textarea.placeholder = placeholders[language] || placeholders.python; this.updateCodePreview(); } async analyzeCode() { const code = document.getElementById('codeInput').value.trim(); const language = document.getElementById('language').value; if (!code) { alert('Будь ласка, введіть код для аналізу'); return; } this.setLoading(true); try { // Simulate API call delay await new Promise(resolve => setTimeout(resolve, 2000)); // Mock analysis results const mockResults = this.generateMockResults(code, language); this.displayResults(mockResults); } catch (error) { console.error('Помилка аналізу:', error); alert('Виникла помилка під час аналізу коду. Спробуйте ще раз.'); } finally { this.setLoading(false); } } generateMockResults(code, language) { const lines = code.split('\n').length; const functions = (code.match(/function|def |class /g) || []).length; const classes = (code.match(/class |\.class/g) || []).length; const score = Math.floor(Math.random() * 40) + 60; // Score between 60-100 const issues = [ { type: 'Стиль', message: 'Рекомендується використовувати більш описові назви змінних' }, { type: 'Продуктивність', message: 'Можна оптимізувати цикли для кращої швидкості' }, { type: 'Безпека', message: 'Додайте валідацію вхідних параметрів' } ]; const recommendations = [ { title: 'Покращення читабельності', description: 'Додайте коментарі до складних частин коду' }, { title: 'Оптимізація', description: 'Розгляньте можливість використання більш ефективних алгоритмів' }, { title: 'Тестування', description: 'Додайте unit-тести для критичних функцій' } ]; return { score, language, metrics: { lines, functions, classes, complexity: Math.floor(Math.random() * 10) + 1 }, issues: issues.slice(0, Math.floor(Math.random() * 3) + 1), recommendations: recommendations.slice(0, Math.floor(Math.random() * 3) + 1) }; } displayResults(results) { this.analysisResults = results; // Show results container document.getElementById('resultsContainer').style.display = 'none'; document.getElementById('resultsContent').style.display = 'block'; // Update language badge const badge = document.getElementById('languageBadge'); badge.textContent = results.language.toUpperCase(); badge.style.display = 'inline-block'; // Update overview document.getElementById('scoreNumber').textContent = results.score; document.getElementById('scoreProgress').style.width = results.score + '%'; document.getElementById('totalIssues').textContent = results.issues.length; document.getElementById('totalRecommendations').textContent = results.recommendations.length; // Update metrics document.getElementById('linesCount').textContent = results.metrics.lines; document.getElementById('functionsCount').textContent = results.metrics.functions; document.getElementById('classesCount').textContent = results.metrics.classes; document.getElementById('complexityScore').textContent = results.metrics.complexity; // Update issues const issuesList = document.getElementById('issuesList'); issuesList.innerHTML = ''; results.issues.forEach(issue => { const li = document.createElement('li'); li.className = 'issue-item'; li.innerHTML = `
${issue.type}
${issue.message}
`; issuesList.appendChild(li); }); // Update recommendations const recommendationsList = document.getElementById('recommendationsList'); recommendationsList.innerHTML = ''; results.recommendations.forEach(rec => { const li = document.createElement('li'); li.className = 'recommendation-item'; li.innerHTML = `
${rec.title}
${rec.description}
`; recommendationsList.appendChild(li); }); } switchTab(tabName) { // Update tab buttons document.querySelectorAll('.tab-btn').forEach(btn => { btn.classList.remove('active'); }); document.querySelector(`[data-tab="${tabName}"]`).classList.add('active'); // Update tab content document.querySelectorAll('.tab-content').forEach(content => { content.classList.remove('active'); }); document.getElementById(tabName).classList.add('active'); } setLoading(isLoading) { const btn = document.getElementById('analyzeBtn'); if (isLoading) { btn.disabled = true; btn.innerHTML = `
Аналізую код... `; } else { btn.disabled = false; btn.innerHTML = ` 🔍 Проаналізувати код `; } } } // Initialize the analyzer when page loads document.addEventListener('DOMContentLoaded', () => { new CodeAnalyzer(); });