{"id":50633441,"url":"https://github.com/teskilatsiz/mergelock","last_synced_at":"2026-06-07T00:03:50.289Z","repository":{"id":359852733,"uuid":"1247741250","full_name":"teskilatsiz/mergelock","owner":"teskilatsiz","description":"Rust tabanlı, yerel çalışan kod güvenliği tarayıcısı. Güvenlik açıklarını, gizli anahtarları ve riskli kod kalıplarını tespit eder.","archived":false,"fork":false,"pushed_at":"2026-05-23T18:30:35.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T20:18:58.570Z","etag":null,"topics":["local-first","mergelock","rust","secrets-detection","security","security-tools","vscode-extension"],"latest_commit_sha":null,"homepage":"https://mergelock.netlify.app/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/teskilatsiz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-23T18:05:00.000Z","updated_at":"2026-05-23T18:30:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/teskilatsiz/mergelock","commit_stats":null,"previous_names":["teskilatsiz/mergelock"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/teskilatsiz/mergelock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teskilatsiz%2Fmergelock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teskilatsiz%2Fmergelock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teskilatsiz%2Fmergelock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teskilatsiz%2Fmergelock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/teskilatsiz","download_url":"https://codeload.github.com/teskilatsiz/mergelock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teskilatsiz%2Fmergelock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34003817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["local-first","mergelock","rust","secrets-detection","security","security-tools","vscode-extension"],"created_at":"2026-06-07T00:03:49.644Z","updated_at":"2026-06-07T00:03:50.284Z","avatar_url":"https://github.com/teskilatsiz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MergeLock-Kod%20G%C3%BCvenlik%20Taray%C4%B1c%C4%B1s%C4%B1-0a0a0a?style=for-the-badge\u0026logo=shieldsdotio\u0026logoColor=white\" alt=\"MergeLock\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"extensions/vscode/resources/mergelock-icon.png\" width=\"128\" height=\"128\" alt=\"MergeLock Logo\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eYerel öncelikli kod güvenlik tarayıcısı\u003c/strong\u003e\u003cbr/\u003e\n  Kaynak kodunuzu buluta göndermeden, VS Code içinde veya terminal üzerinden\u003cbr/\u003egüvenlik açıklarını tespit edin ve güvenli düzeltmeler uygulayın.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/teskilatsiz/mergelock\"\u003e\u003cimg src=\"https://img.shields.io/badge/Dil-Rust-e43717?style=flat-square\u0026logo=rust\u0026logoColor=white\" alt=\"Rust\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/teskilatsiz/mergelock\"\u003e\u003cimg src=\"https://img.shields.io/badge/Eklenti-VS%20Code-007ACC?style=flat-square\u0026logo=visualstudiocode\u0026logoColor=white\" alt=\"VS Code\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/teskilatsiz/mergelock\"\u003e\u003cimg src=\"https://img.shields.io/badge/%C3%87%C4%B1kt%C4%B1-SARIF%202.1.0-4B8BBE?style=flat-square\" alt=\"SARIF\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/teskilatsiz/mergelock/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/Lisans-MIT-22c55e?style=flat-square\" alt=\"MIT\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-genel-bakış\"\u003eGenel Bakış\u003c/a\u003e •\n  \u003ca href=\"#-öne-çıkan-özellikler\"\u003eÖzellikler\u003c/a\u003e •\n  \u003ca href=\"#-hızlı-başlangıç\"\u003eBaşlangıç\u003c/a\u003e •\n  \u003ca href=\"#-vs-code-kullanımı\"\u003eVS Code\u003c/a\u003e •\n  \u003ca href=\"#-cli-komutları\"\u003eCLI\u003c/a\u003e •\n  \u003ca href=\"#-git-koruması\"\u003eGit Koruması\u003c/a\u003e •\n  \u003ca href=\"#-kural-kapsamı\"\u003eKurallar\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## 📋 Genel Bakış\n\nMergeLock, geliştiriciler için tasarlanmış **yerel öncelikli** bir kod güvenlik tarayıcısıdır. Kodunuz makinenizden çıkmaz — bulut bağlantısı gerekmez, veri paylaşımı yoktur.\n\nVarsayılan yaklaşım basittir: kaynak kodu yerelde tut, çalışırken otomatik tara, riskli değişiklikler Git'e ulaşmadan uyar ve her yama önerisini incelenebilir kıl.\n\n**Çalışma döngüsü:**\n\n```\nTara → İncele → Düzelt → Devam et\n```\n\n---\n\n## ✨ Öne Çıkan Özellikler\n\n| Özellik | Açıklama |\n|---------|----------|\n| 🏠 **Yerel Çalışma** | Kodunuz makinenizden çıkmaz. Bulut bağlantısı gerekmez. |\n| 🔍 **Otomatik Tarama** | VS Code açılışında ve dosya kaydında otomatik tarama |\n| 🖥️ **VS Code Entegrasyonu** | Diagnostik paneli, bildirimler, kenar çubuğu, güvenlik inceleme ekranı, hızlı düzeltmeler |\n| ⌨️ **Güçlü CLI** | Metin, JSON ve SARIF formatlarında çıktı |\n| 🩹 **Güvenli Düzeltme** | Deterministik tek satır yamalar — uygulama öncesi satır eşleşmesi doğrulanır |\n| 🔐 **Gizli Bilgi Tespiti** | AWS, GitHub, Google API, Slack, Stripe, npm tokenları ve daha fazlası |\n| 🔗 **Git Kancaları** | Commit, merge ve push öncesi otomatik tarama |\n| 📊 **SARIF Desteği** | GitHub Code Scanning uyumlu SARIF 2.1.0 çıktısı |\n| 📋 **Temel Çizgi Yönetimi** | Mevcut bulguları kabul edip yalnızca yeni bulgulara odaklanma |\n| 🌐 **Geniş Dil Desteği** | JS, TS, Python, Go, Java, C#, Ruby, Rust, C/C++, PHP, SQL, Docker, Terraform |\n| 🌍 **Çift Dil Arayüz** | VS Code eklentisi Türkçe ve İngilizce arayüz desteği sunar |\n\n---\n\n## 🚀 Hızlı Başlangıç\n\n### Gereksinimler\n\n- [Rust araç zinciri](https://rustup.rs/) (1.80+)\n- [Node.js](https://nodejs.org/) (eklenti geliştirmesi için)\n- [VS Code](https://code.visualstudio.com/) (eklenti kullanımı için)\n\n### 1. Projeyi Klonlayın\n\n```bash\ngit clone https://github.com/teskilatsiz/mergelock.git\ncd mergelock\n```\n\n### 2. Derleyin\n\n```bash\ncargo build -p mergelock-cli -p mergelock-lsp\n```\n\nBu komut iki çalıştırılabilir dosya oluşturur:\n\n```\ntarget/debug/mergelock       ← CLI tarayıcı\ntarget/debug/mergelock-lsp   ← VS Code LSP sunucusu\n```\n\n### 3. İlk Taramanızı Yapın\n\n```bash\ntarget/debug/mergelock scan --format text .\n```\n\n\u003e 💡 Tarama sonucu `0 bulgu` dönüyorsa ama `--no-policy` ile bulgu çıkıyorsa, `.mergelock-policy.json` temel çizgisi mevcut bulguları gizliyordur. Bu beklenen bir davranıştır.\n\n---\n\n## 🖥️ VS Code Kullanımı\n\n### Geliştirme Modunda Çalıştırma\n\n```bash\ncd mergelock\ncode .\n```\n\n**F5** tuşuna basın. VS Code otomatik olarak Rust binary'lerini derler ve izole bir Extension Development Host penceresi açar.\n\nAçılan pencerede:\n\n1. Taramak istediğiniz klasörü açın\n2. Çalışma alanına güvenin (VS Code sorarsa)\n3. MergeLock otomatik olarak başlar — açılışta workspace tarar, dosya kaydedince dosya tarar\n4. Bulgular **Problems** panelinde, **MergeLock kenar çubuğunda** ve **durum çubuğunda** görünür\n\n### Kullanılabilir Komutlar\n\n| Komut | Açıklama |\n|-------|----------|\n| `MergeLock: Scan Current File` | Açık dosyayı tara |\n| `MergeLock: Scan Changed Files` | Git'te değişen dosyaları tara |\n| `MergeLock: Scan Workspace` | Tüm çalışma alanını tara |\n| `MergeLock: Show Security Review` | Güvenlik inceleme panelini aç |\n| `MergeLock: Apply Safe Patch` | Seçili güvenli yamayı uygula |\n| `MergeLock: Apply All Safe Patches` | Tüm güvenli yamaları onayla ve uygula |\n| `MergeLock: Install Git Hooks` | Git kancalarını kur |\n| `MergeLock: Export SARIF` | SARIF 2.1.0 raporu dışa aktar |\n| `MergeLock: Create/Refresh Baseline` | Temel çizgi oluştur veya yenile |\n| `MergeLock: Show Suppressed Findings` | Bastırılmış bulguları görüntüle |\n| `MergeLock: Clear Baseline` | Temel çizgiyi temizle ve yeniden tara |\n\n### VSIX Olarak Kurulum\n\n```bash\ncd extensions/vscode\nnpx @vscode/vsce package --target linux-x64\ncode --install-extension mergelock-teskilatsiz-linux-x64-0.1.2.vsix\n```\n\n### VS Code Ayarları\n\n| Ayar | Varsayılan | Açıklama |\n|------|:----------:|----------|\n| `mergelock.scanOnStartup` | `true` | Açılışta otomatik tarama |\n| `mergelock.scanOnSave` | `true` | Dosya kaydında otomatik tarama |\n| `mergelock.scanDebounceMs` | `750` | Otomatik tarama gecikme süresi (ms) |\n| `mergelock.showNotifications` | `true` | Bildirim göster |\n| `mergelock.offerGitHooks` | `true` | Git kancası kurulumu öner |\n| `mergelock.localOnly` | `true` | Yalnızca yerel mod |\n| `mergelock.maxFileBytes` | `1048576` | Maksimum dosya boyutu (byte) |\n\n---\n\n## ⌨️ CLI Komutları\n\n```bash\n# Metin formatında tarama\nmergelock scan --format text .\n\n# JSON formatında tarama\nmergelock scan --format json .\n\n# SARIF çıktısı (CI entegrasyonu için)\nmergelock scan --format sarif --output rapor.sarif.json .\n\n# Sadece değişen dosyaları tara\nmergelock scan --changed .\n\n# Temel çizgiyi yok sayarak tara\nmergelock scan --no-policy .\n\n# Temel çizgi oluştur veya yenile\nmergelock baseline refresh .\n\n# Tek bir bulguyu bastır\nmergelock suppress ML-örnek-id .\n```\n\n\u003e ⚠️ Tarayıcı, yüksek veya kritik seviye bulgu varsa **çıkış kodu 2** döndürür.\n\n---\n\n## 🔗 Git Koruması\n\nMergeLock, Git iş akışınıza entegre olarak riskli kodun depoya ulaşmasını önler.\n\n### Kancaları Kurun\n\nVS Code'dan:\n```\nMergeLock: Install Git Hooks\n```\n\nTerminalden:\n```bash\nmergelock hooks install /path/to/your/project\n```\n\n### Kurulan Kancalar\n\n| Kanca | Davranış |\n|-------|----------|\n| `pre-commit` | Commit öncesi değişen dosyaları tarar |\n| `pre-merge-commit` | Merge commit öncesi değişen dosyaları tarar |\n| `pre-push` | Push öncesi tüm çalışma alanını tarar |\n\n### Kancaları Kaldırma\n\n```bash\nmergelock hooks uninstall /path/to/your/project\n```\n\n\u003e Yüksek veya kritik bulgu tespit edildiğinde Git işlemi otomatik olarak durdurulur.\n\n---\n\n## 🛡️ Kural Kapsamı\n\nMergeLock, farklı dil ve platformlarda yüksek sinyalli yerel kurallar kullanır:\n\n| Alan | Kapsam |\n|------|--------|\n| 🔐 **Gizli Bilgiler** | AWS, GitHub, Google API, Slack, Stripe, npm tokenları, özel anahtar materyali, genel kimlik bilgileri |\n| 🟡 **JavaScript / TypeScript** | SQL enjeksiyonu, komut enjeksiyonu, dinamik kod çalıştırma, zayıf JWT, TLS atlatma, güvensiz rastgelelik |\n| 🌐 **Ön Yüz** | React `dangerouslySetInnerHTML`, Vue `v-html`, Svelte `{@html}`, Angular `bypassSecurityTrust*`, DOM XSS, CSP sorunları, tabnabbing |\n| 🖥️ **Arka Uç** | Permisif CORS, zayıf oturum, güvensiz çerezler, SSRF, açık yönlendirme, hata ayıklama modu, path traversal |\n| 🐍 **Python** | `subprocess(shell=True)`, `os.system`, `pickle`, güvensiz YAML, SQL birleştirme, TLS atlatma, `mktemp`, zayıf rastgelelik |\n| 🔷 **Go** | SQL `fmt.Sprintf`, shell çalıştırma, `InsecureSkipVerify`, `math/rand` güvenlik kullanımı |\n| ☕ **Java / JVM** | JDBC SQL birleştirme, `createStatement`, komut çalıştırma, nesne deserializasyonu, trust-all TLS |\n| 💜 **C# / .NET** | SQL birleştirme, `Process.Start`, `BinaryFormatter`, sertifika doğrulama atlatma |\n| 💎 **Ruby** | `eval`, komut çalıştırma, `Marshal.load`, SQL interpolasyonu |\n| 🦀 **Rust** | `sh -c` shell komutu, geçersiz sertifika kabul |\n| ⚙️ **C / C++** | `gets`, sınırsız string kopyalama, `system`/`popen`, öngörülebilir geçici dosya |\n| 🐘 **PHP** | `eval`, `unserialize`, komut enjeksiyonu, SQL birleştirme, dinamik include, TLS atlatma |\n| 🗄️ **SQL / Veritabanı** | Dinamik execute, OS komutu, dosya erişimi, geniş public yetkilendirme |\n| 📦 **Konteyner / IaC** | Ayrıcalıklı konteyner, root kullanıcı, Kubernetes güvenlik boşlukları, açık depolama, `curl\\|bash`, `chmod 777` |\n\nTam kural listesi için: [docs/rules.md](docs/rules.md)\n\n### Desteklenen Dosya Türleri\n\n```\njs  jsx  ts  tsx  mjs  cjs  html  htm  vue  svelte  astro\npy  go  rs  java  kt  cs  rb  php\nsql  env  json  yaml  yml  toml  tf  tfvars  hcl  ini  conf\nproperties  xml  gradle  sh  Dockerfile  Containerfile\n```\n\n---\n\n## 🩹 Güvenli Yamalar\n\nMergeLock yalnızca deterministik ve düşük riskli yamaları otomatik uygular. Uygulama öncesi hedef satırın hâlâ tarama sonucuyla eşleştiği doğrulanır.\n\nŞu anda desteklenen düzeltmeler:\n\n| Düzeltme | Açıklama |\n|----------|----------|\n| `.innerHTML` → `.textContent` | XSS riski azaltma |\n| Zayıf hash → `sha256` | `md5` veya `sha1` yerine güçlü hash |\n| Wildcard CORS → ortam değişkeni | `origin: '*'` yerine kontrollü origin |\n| Şifre autocomplete | `autocomplete=\"on\"` → `\"current-password\"` |\n| `target=\"_blank\"` | `rel=\"noopener noreferrer\"` ekleme |\n| TLS doğrulama | Yaygın TLS bypass boolean düzeltmeleri |\n| Express cookie | Güvenlik bayrakları ekleme |\n\nBelirsiz durumlar **inceleme bulgusu** olarak kalır.\n\n---\n\n## 🔧 Yapılandırma\n\nProje kök dizininde `.mergelock-policy.json` dosyası oluşturarak tarama davranışını özelleştirebilirsiniz:\n\n```json\n{\n  \"suppressed_ids\": [],\n  \"disabled_rules\": [],\n  \"max_file_bytes\": 1048576\n}\n```\n\n---\n\n## 📤 CI Entegrasyonu\n\n### GitHub Actions Örneği\n\n```yaml\n- name: MergeLock Tarama\n  run: |\n    mergelock scan --format sarif --output mergelock.sarif.json .\n\n- name: SARIF Yükle\n  uses: github/codeql-action/upload-sarif@v3\n  with:\n    sarif_file: mergelock.sarif.json\n```\n\n---\n\n## 📁 Proje Yapısı\n\n```\ncrates/\n  core-types/   paylaşılan bulgu, politika ve rapor türleri\n  secrets/      gizli bilgi algılayıcıları ve redaksiyon\n  fix/          deterministik yama üretimi\n  engine/       dosya keşfi, kurallar, politika filtreleme\n  sarif/        SARIF 2.1.0 kodlayıcı\n  cli/          komut satırı arayüzü ve Git kanca yükleyici\n  lsp/          yerel dil sunucusu\nextensions/\n  vscode/       VS Code eklentisi\nwebsite/        proje web sitesi\ndocs/           mimari, kurallar, referanslar\n```\n\n---\n\n## 📖 Dokümantasyon\n\n- [Mimari](docs/architecture.md)\n- [Resmi referanslar](docs/official-docs.md)\n- [Kural listesi](docs/rules.md)\n\n---\n\n## 📄 Lisans\n\nBu proje [MIT Lisansı](LICENSE) altında yayınlanmıştır.\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eMergeLock — kodunuz yerelde güvende. 🔒\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteskilatsiz%2Fmergelock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteskilatsiz%2Fmergelock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteskilatsiz%2Fmergelock/lists"}