İçeriğe geç

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.

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.

  1. Runner, değişen kodu sizin CI hattınızda kural setine göre tarar.
  2. Eşleşen her kural bir bulgu üretir (dosya + satır + gerekçe).
  3. 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.
  4. Yanlış pozitifleri except/ignore ile 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 CA1806 ve [SuppressMessage].
  • Depo içindeki bir .editorconfig ya da .globalconfig dosyasında kuralın kendi satırı none ise, 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.props iç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.

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.

SeviyeAnlamı
errorCiddi ihlal; merge’i bloklayabilir.
warningDüzeltilmesi önerilen sorun.
infoBilgilendirme / stil önerisi.

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.