Node.js Proje Sağlık Denetimi: RepoDoctor ile Güvenlik, Bağımlılık ve CI/CD Analizi
Node.js projeniz yerel geliştirme makinenizde kusursuz çalışıyor.
Ardından GitHub Actions CI patlıyor.
Kullanımdan kaldırılmış bir paket gözden kaçmış. Kaynak koda kazara gizli bir API anahtarı commit edilmiş. .env yapılandırması sunucu ortamıyla uyuşmuyor. Bir GitHub Actions iş akışında kritik bir adımı eksik tanımlanmış ya da monorepo yapınızdaki iki farklı paket aynı kütüphanenin çakışan sürümlerini kullanıyor.
Bu tür yapısal problemler yazılım geliştirme sürecinde kolayca gözden kaçar ancak canlıda (production) felaketle sonuçlanır.
[!IMPORTANT] Özet Yanıt: RepoDoctor Nedir ve Neden Önemlidir? RepoDoctor (
npx @gucluyumhe/repodoctor), Ömer Özbay tarafından geliştirilen, açık kaynaklı ve yerel çalışan (local-first) bir JavaScript/TypeScript repo analiz ve güvenlik tanı aracıdır. Kodlarınızdan tek bir bayt dahi bilgisayarınızdan dışarı çıkmadan; sızdırılmış kimlik bilgilerini, bağımlılık açıklarını, monorepo uyumsuzluklarını ve hatalı CI/CD akışlarını saniyeler içinde tespit eder ve otomatik onarır.
Modern JavaScript Repolarındaki Gizli Kırılganlıklar
Günümüz JavaScript ve TypeScript projeleri yalnızca birkaç kaynak dosyadan ibaret değildir. Tipik bir kurumsal repoda:
- Yüzlerce iç içe geçmiş
node_modulesbağımlılığı - Çoklu ortam değişkenleri ve
.env.exampleşablonları - Karmaşık GitHub Actions veya GitLab CI iş akışları
- Konteyner yapılandırmaları (
Dockerfile,docker-compose.yml) - Monorepo paket yöneticisi sınırları (pnpm, Turborepo, Yarn)
- Katı TypeScript derleyici (
tsconfig.json) ayarları bulunur.
Yalnızca birim testleri (unit tests) veya ESLint gibi geleneksel linter'ları çalıştırmak reponuzun bütünsel mimari sağlığını ve gizli anahtar güvenliğini ölçemez.
Karşılaştırma Matrisi: Tanı Araçları Yaklaşımı
| Özellik | Standart Linter'lar (ESLint/Prettier) | Bulut Tarayıcıları (Snyk / SonarQube) | RepoDoctor (@gucluyumhe/repodoctor) |
|---|---|---|---|
| Çalışma Modeli | Yerel dosya AST ayrıştırması | Buluta kod yükleme zorunluluğu | %100 Yerel (Veri asla dışarı çıkmaz) |
| Gizli Anahtar (Secret) Taraması | Yok | Ücretli / Bulut tabanlı | Yerleşik Regex & Shannon Entropi |
| CI/CD İş Akışı Denetimi | Yok | Kısıtlı | Eksiksiz GitHub Actions pipeline analizi |
| Monorepo Bağımlılık Kayması | Yok | Karmaşık kurulum | Paketler arası anlık sürüm karşılaştırması |
Otomatik Onarım (--fix) |
Sadece kod formatlama | Manuel talimatlar | Otomatik dosya onarımı (.gitignore, tsconfig) |
| Kurulum Maliyeti | Ayar dosyaları gerektirir | Hesap açma, webhook bağlama | Sıfır kurulum (npx @gucluyumhe/repodoctor) |
1. RepoDoctor Reponuzda Neleri Denetler?
RepoDoctor tüm projenizi çok boyutlu bir güvenlik ve mimari taramadan geçirir:
graph TD
Repo[Projeniz / Repo] --> Scanner[RepoDoctor Tanı Motoru]
Scanner --> S1[Güvenlik: Sızdırılmış Gizli Anahtarlar]
Scanner --> S2[Bağımlılıklar: Güvenlik Açıkları & Sürüm Kayması]
Scanner --> S3[CI/CD: GitHub Actions Akış Doğrulaması]
Scanner --> S4[Yapılandırma: tsconfig, Docker, Env Uyuşmazlığı]
Scanner --> Report[Çözüm Odaklı Tanı Raporu]
A. Sızdırılmış Gizli Anahtar ve Kimlik Bilgileri
Geliştiricilerin yaptığı en tehlikeli hatalardan biri gizli anahtarları Git geçmişine göndermektir. RepoDoctor şunları tarar:
- API Anahtarları (OpenAI, Stripe, AWS, GitHub token'ları, SendGrid)
- Özel Anahtarlar (
.pem,.id_rsa,.key) - Veritabanı Bağlantı Dizgileri (
postgres://,mongodb+srv://) - Açıkta kalan JWT ve Bearer oturum token'ları
B. Bağımlılık Sağlığı ve Monorepo Sürüm Kayması
Büyük monorepolarda farklı paketler çoğunlukla aynı kütüphanenin birbiriyle uyumsuz versiyonlarını kullanır. RepoDoctor şunları yakalar:
- Kullanımdan kaldırılmış (deprecated) paketler
- Çakışan kilit dosyaları (
package-lock.jsonilepnpm-lock.yamlkarışıklığı) - Bildirilmemiş (undeclared) import çağrıları
- Bundle boyutunu şişiren kullanılmayan paketler
C. CI/CD Akış Hatalarının Önlenmesi
RepoDoctor .github/workflows/*.yml dosyalarını ayrıştırarak:
- Derleme öncesi
checkoutadımının olup olmadığını - Node.js önbellekleme (cache) adımlarını
- Güvenlik ihlallerini önlemek için action sürümlerinin sabitlenmesini (pinning) doğrular.
2. Hızlı Başlangıç: 5 Saniyede RepoDoctor Çalıştırın
RepoDoctor doğrudan npm üzerinde yayınlandığından küresel bir kuruluma gerek duymaz. npx ile anında çalıştırabilirsiniz:
Adım 1: Anlık Tarama Başlatın
npx @gucluyumhe/repodoctor
RepoDoctor çalışma alanınızı tarar, renkli durum göstergeleri sunar ve genel RepoSağlık Skorunuzu (A+'dan F'ye) hesaplar.
Adım 2: Hataları Otomatik Onarın
Eksik .gitignore, bozuk tsconfig.json veya eksik .env.example şablonları tespit edildiğinde şu komutu çalıştırın:
npx @gucluyumhe/repodoctor --fix
RepoDoctor iş mantığınıza dokunmadan eksik yapılandırma dosyalarını güvenle üretir veya yamalar.
Adım 3: GitHub Actions Akışını Otomatik Ekleyin
Her pull request işleminde repo sağlığını otomatik kontrol etmek için CI şablonunu tek komutla oluşturun:
npx @gucluyumhe/repodoctor init-ci
3. Ekipler ve CI İçin Çoklu Çıktı Formatları
RepoDoctor kurumsal raporlama formatlarını varsayılan olarak destekler:
- Etkileşimli HTML Dashboard: Görsel grafikler ve kategorize edilmiş hata kartları.
- SARIF Formatı: GitHub Code Scanning ve güvenlik sekmesiyle tam entegre.
- JSON & Markdown: Pull request yorumları ve iç uyumluluk takipleri için ideal.
npx @gucluyumhe/repodoctor --format html --output report.html
Sıkça Sorulan Sorular (FAQ)
RepoDoctor kaynak kodumu harici bir bulut sunucusuna gönderir mi?
Hayır. RepoDoctor kesinlikle %100 yerel çalışan (local-first) bir araçtır. Tüm ayrıştırma, gizli anahtar taraması ve rapor üretimi kendi bilgisayarınızdaki Node.js sürecinde gerçekleşir. Dışarıya tek bir bayt dahi gönderilmez.
RepoDoctor'ın npm audit komutundan farkı nedir?
npm audit yalnızca npm veritabanındaki bilinen CVE açıklarını sorgular. RepoDoctor ise projenizin bütünsel mimarisini inceler: sızdırılmış gizli anahtarlar, hatalı CI/CD dosyaları, Docker açıkları, .env uyuşmazlıkları ve derleme bayrakları.
RepoDoctor'ı CI/CD süreçlerime entegre edebilir miyim?
Evet. RepoDoctor kritik güvenlik açıkları veya hatalı iş akışları bulunduğunda süreci durduracak (--strict) çıkış kodları üretir.
Açık Kaynak ve Paket Bağlantıları
RepoDoctor tamamen açık kaynaklıdır:
- npm Paketi: @gucluyumhe/repodoctor npm Sayfası
- GitHub Deposu: sandrotonal/repodoctor GitHub Reposu
Projenizi bugün denetleyin ve canlıya güvenle çıkın:
npx @gucluyumhe/repodoctor

