diff --git a/README.md b/README.md index 815282b..7bbebb0 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,49 @@ -# YakNet Accessibility Console 2.9 (AI-Powered Static Analysis) +# YakNet Accessibility Console 3.0 (AI-Powered Static Analysis & WCAG 2.2 Linter) [](https://php.net) +[](https://phpstan.org) +[](https://phpunit.de) +[](https://www.w3.org/WAI/standards-guidelines/wcag/) [](LICENSE) -[](https://gemini.google.com) +[](https://ai.google.dev) -**YakNet Accessibility Console**, web projelerinizdeki erişilebilirlik (WCAG 2.1) hatalarını sadece tespit etmekle kalmayan, aynı zamanda **Yapay Zeka (AI)** desteğiyle bu hataları otomatik olarak düzeltebilen (Self-Healing) profesyonel bir PHP static analysis kütüphanesidir. +**YakNet Accessibility Console**, web projelerinizdeki erişilebilirlik (WCAG 2.1, 2.2 ve WAI-ARIA) ve HTML söz dizimi hatalarını statik olarak analiz eden, **127 benzersiz kural setiyle** denetleyen ve **Yapay Zeka (Google Gemini AI)** desteğiyle kaynak kodunuzu otomatik tamir edebilen (Self-Healing) kurumsal düzeyde bir PHP statik analiz ve linter kütüphanesidir. -PHPStan ve PHP-CS-Fixer esintili yapısıyla, yerel görünüm şablonlarınızı (`.blade.php`, `.twig`, `.html`, `.php`) doğrudan tarayabilir, baseline desteğiyle mevcut hataları yok sayabilir ve CI/CD süreçlerinize tam entegre çalışabilir. +PHPStan ve PHP-CS-Fixer esintili modern mimarisiyle; Laravel Blade (`.blade.php`), Twig (`.twig`), PHP (`.php`) ve standart HTML şablonlarınızı doğrudan tarar, baseline desteğiyle mevcut teknik borcu yönetir ve CI/CD pipeline süreçlerinize sıfır yapılandırmayla entegre olur. --- ## 🌟 Öne Çıkan Özellikler -- **🤖 AI Self-Healing:** Tespit edilen WCAG hataları için Google Gemini AI üzerinden akıllı çözüm önerileri alır ve kaynak kodunuzu (Blade, Twig, PHP, HTML) otomatik olarak tamir eder. -- **⚡ PHPStan Tarzı Analiz:** Tüm projeyi veya belirli dizinleri komut satırından tarayarak hataları tam dosya yolu ve satır numarası ile listeler. -- **🛡️ Baseline Desteği:** `a11y-baseline.json` oluşturarak mevcut erişilebilirlik hatalarını yok sayabilir, CI/CD pipeline'ınızın sadece yeni hatalarda kırılmasını sağlayabilirsiniz. -- **⚙️ YAML Konfigürasyonu:** `a11y.yaml` dosyası üzerinden tarama yollarını, hariç tutulacak klasörleri, kural seviyelerini ve özel kural setlerini yapılandırabilirsiniz. -- **🔌 Çoklu Çıktı Formatları:** - - `console`: Renkli ve düzenli terminal tablosu. - - `json`: Makine tarafından okunabilir JSON çıktısı. - - `github`: GitHub Actions PR süreçlerinde doğrudan inline hata göstermek için workflow formatı. -- **📊 Görsel Raporlama:** Sonuçları modern bir HTML Dashboard raporu olarak dışarı aktarın. +- **🛡️ 127 Benzersiz WCAG 2.1 / 2.2 & WAI-ARIA Kuralı:** Algılanabilir (Perceivable), Çalıştırılabilir (Operable), Anlaşılabilir (Understandable) ve Sağlam (Robust) prensiplerine göre yapılandırılmış 5 kademeli (Level 1-5) kural havuzu. +- **🔍 HTML & Şablon Söz Dizimi (Syntax/AST) Linter'ı:** + - Aynı etiket üzerinde yinelenen nitelikler (`Duplicate Attributes` - HTML5 3.2.4 ihlali) + - Kapanmamış veya çapraz kapanmış yapısal etiketler (`Mismatched / Unclosed Tags`) + - Void olmayan etiketlerde geçersiz self-closing kullanımı (`
`, ``, ``) + - Boşluksuz bitişik nitelik söz dizimi (``) + - Kapanmamış HTML yorum blokları (`', $pos + 4); + if ($endPos === false) { + $line = $this->getLineFromOffset($html, $pos); + $issues[] = new SyntaxIssue( + code: 'SYNTAX_UNCLOSED_COMMENT', + message: 'HTML comment is opened with .', + line: $line, + snippet: mb_substr($html, $pos, 80), + fixSuggestion: 'Close the comment with -->.', + severity: 'error' + ); + break; + } + $offset = $endPos + 3; + } + } + + /** + * @param SyntaxIssue[] $issues + */ + private function checkAttributes(string $html, array &$issues): void + { + // Match start tags