Kurallara genel bakış
AppArch’ın kural kataloğu, kod tabanınızda neyin “doğru mimari” sayılacağını tanımlar. Bu bölüm her kuralı programlama diline ve kategoriye göre tek tek açıklar - hatalı/doğru kod örnekleriyle.
Kural listesi nasıl gelir?
Bölüm başlığı “Kural listesi nasıl gelir?”Kurallar, çalışan collector (runner) tarafından açılışta /api/v1/runner/rules ucundan çekilir. Liste:
- Dile göre filtrelenir - bir Python collector’ı yalnızca
python.*kurallarını alır, .NET kurallarını değil. Tek istisna yapılandırma kurallarıdır (config.*, aşağıda): her collector bunları alır. - Override uygulanır - panelde proje veya çalışma alanı bazında kapattığınız kurallar collector’a hiç gönderilmez. Böylece kapalı kurallar gereksiz bulgu üretmez.
Her kural bir kod (ARCH302), bir anahtar (dotnet.security.sql-injection), bir kategori, bir önem ve (güvenlik kuralları için) bir CWE kimliği taşır.
Bulgu ve yorumlar nasıl üretilir?
Bölüm başlığı “Bulgu ve yorumlar nasıl üretilir?”- Runner, değişen kodu sizin CI hattınızda kural setine göre tarar.
- Eşleşen her kural bir bulgu üretir (dosya + satır + gerekçe).
- ArchPilot bu bulguyu PR/MR’a satır içi yorum olarak yazar. Yorumlar marker ile anahtarlanır: aynı bulgu her push’ta tekrar yazılmaz, düzeltilen ihlaller otomatik kapanır.
- Yanlış pozitifleri
except/ignoreile ya da yorumdan tek tıkla “Kabul et” ile yönetirsiniz.
Ayrıntı: ArchPilot’u etkinleştirme ve Mimari kuralları yazma.
Microsoft kuralları ve projenin kendi derleme ayarları (.NET)
Bölüm başlığı “Microsoft kuralları ve projenin kendi derleme ayarları (.NET)”CA, IDE, CS ve ASP kuralları Microsoft’un kendi analizörleridir; collector bunları katalogdaki önem derecesiyle çalıştırır - .NET SDK’nın çoğunu kapatan varsayılan analiz seviyesi uygulanmaz. Ekibinizin depoda verdiği karar ise uygulanır:
- Kaynakta
#pragma warning disable CA1806ve[SuppressMessage]. - Depo içindeki bir
.editorconfigya da.globalconfigdosyasında kuralın kendi satırınoneise, o bölümün kapsadığı dosyalar için:dotnet_diagnostic.CA1806.severity = none. Diğer seviyeler (suggestion,silent) ve kategori ya da toptan anahtarlar (dotnet_analyzer_diagnostic.category-Performance.severity) kuralı kapatmaz. - Dosyayı derleyen proje dosyasında ya da
Directory.Build.propsiçinde<NoWarn>.
Collector logu bu yolla kapatılan her kuralı ve kaç bulgunun raporlanmadığını yazar. Bir kuralı depoya dokunmadan bütün proje ya da workspace için kapatmak için paneldeki kural ayarlarını kullanın.
Yapılandırma dosyaları
Bölüm başlığı “Yapılandırma dosyaları”Dockerfile’lar, docker compose dosyaları, Kubernetes manifestleri, GitHub Actions iş akışları ve GitLab CI tanımları, her collector imajının taşıdığı tek bir denetleyiciyle kontrol edilir; böylece hangi dilde olursa olsun her depo aynı cevabı alır. Kuralları (ARCH10001-ARCH10033, anahtarlar config.*) Yapılandırma dosyaları altında listelenir. Bulguları sıradan bulgulardır: ArchScan skoruna sayılır, güvenlik olanları (CWE’li) ArchSecurity’ye gider ve ArchPilot merge request’lerde bunlar için yorum yazar. Diğer kurallar gibi kural ayarlarından açılıp kapatılır; tarama kapsamında hariç tutulan yollar bunlara da uygulanır.
Denetleyici yalnızca dosya okur. Deponuzdan hiçbir şey çalıştırmaz (imaj derlemez, helm template çalıştırmaz); bu yüzden Helm şablonları tahmin edilmez, atlanır.
Önem seviyeleri
Bölüm başlığı “Önem seviyeleri”| Seviye | Anlamı |
|---|---|
| error | Ciddi ihlal; merge’i bloklayabilir. |
| warning | Düzeltilmesi önerilen sorun. |
| info | Bilgilendirme / stil önerisi. |
Kategoriler
Bölüm başlığı “Kategoriler”naming · async · ef · security (CWE etiketli) · exception · di · performance · codequality · quality · api · linq · logging · resource · architecture
Soldaki menüden bir programlama dili seçin; kurallar kategoriye göre gruplanmıştır.