Skip to content

Mitwirken

Vielen Dank für Ihr Interesse an AppPorts! Wir begrüßen es, wenn Community-Mitglieder beitragen, sei es bei der Fehlerbehebung, Dokumentationsverbesserung oder dem Hinzufügen neuer Funktionen.

Bevor Sie beginnen

  1. Durchsuchen Sie vorhandene Issues, um sicherzustellen, dass keine Duplikate vorhanden sind
  2. Forken Sie das Projekt und klonen Sie es lokal
  3. Erstellen Sie einen Feature-Branch (feat/your-feature) oder Fix-Branch (fix/your-fix) basierend auf dem develop-Branch

Entwicklungsansatz

Über Vibe Coding

Das AppPorts-Projekt akzeptiert Vibe-Code-Entwicklung mit KI-gestützten Tools (z. B. Cursor, GitHub Copilot, Claude). Wir verstehen, dass KI-Tools die Entwicklungseffizienz erheblich steigern können, aber die Qualität und Korrektheit des eingereichten Codes liegt in der Verantwortung des Contributors.

Bei der Verwendung von Vibe Coding:

  • KI-Assistenten müssen die CLAUDE.md im Projektstammverzeichnis befolgen, die Codierungsrichtlinien, Architekturkonventionen, Build-Befehle und Entwicklungsworkflow definiert. Wenn der KI-Assistent diese Datei nicht automatisch liest, fordern Sie ihn in Ihren Prompts explizit auf, zuerst CLAUDE.md zu lesen
  • Erwägen Sie eine Kreuzvalidierung der generierten Codequalität und Sicherheit mit mehreren KI-Modellen, um blinde Flecken eines einzelnen Modells zu vermeiden
  • Vom KI generierter Code kann nicht dem vorhandenen Stil des Projekts entsprechen; bitte manuell vor der Einreichung überprüfen
  • KI kann das Verständnis des macOS-Systemverhaltens nicht ersetzen; bitte verifizieren Sie Logik, die Dateisystemoperationen, Code-Signierung und Berechtigungsverwaltung betrifft, manuell
  • Änderungen an Kernfunktionalität (z. B. Migrationsstrategien, Datenverzeichnismigration, Code-Signierung) müssen zuerst über Issue diskutiert werden, bevor mit der Entwicklung begonnen wird

Codekonventionen

  • Befolgen Sie Swift-Codekonventionen und den vorhandenen Stil des Projekts
  • Schreiben Sie klare Swift-Dokumentationskommentare für komplexe Logik
  • SwiftUI-Zeichenkettenliterale verwenden die LocalizedStringKey-API; AppKit/API-Zeichenketten verwenden .localized

Testanforderungen

⚠️ Alle PRs müssen Tests bestehen

Unabhängig von der Entwicklungsmethode müssen die folgenden Tests vor dem Einreichen eines PR abgeschlossen werden. CI führt automatisch Kompilierungs-Smoke-Checks aus; nicht bestandene PRs werden am Merging gehindert.

Erforderlich: Kompilierungs-Smoke-Check

Alle PRs müssen die Xcode Release-Kompilierung bestehen — dies ist eine harte Anforderung für das Merging:

bash
xcodebuild clean build \
  -scheme "AppPorts" \
  -configuration Release \
  -destination 'platform=macOS' \
  -derivedDataPath build \
  CODE_SIGN_IDENTITY="" \
  CODE_SIGNING_REQUIRED=NO \
  CODE_SIGN_ENTITLEMENTS="" \
  CODE_SIGNING_ALLOWED=NO

Auf Anfrage: Spezialisierte Tests

Wenn ein PR die entsprechenden Module betrifft, wird empfohlen, proaktiv die folgenden spezialisierten Tests auszuführen. CI führt diese auch im Advisory-Modus in PRs aus; Ergebnisse blockieren das Merging nicht, geben aber Feedback.

Datenverzeichnis-Tests

Ausführen, wenn PR DataDirMover, DataDirScanner oder Datenverzeichnismigration-Logik betrifft:

bash
xcodebuild test \
  -scheme "AppPorts" \
  -configuration Debug \
  -destination 'platform=macOS' \
  -derivedDataPath build \
  -only-testing:"AppPortsTests/DataDirMoverTests" \
  -only-testing:"AppPortsTests/DataDirScannerTests" \
  CODE_SIGN_IDENTITY="" \
  CODE_SIGNING_REQUIRED=NO \
  CODE_SIGN_ENTITLEMENTS="" \
  CODE_SIGNING_ALLOWED=NO

App-Migrations-Tests

Ausführen, wenn PR AppMigrationService, AppScanner oder App-Migrations-Logik betrifft:

bash
xcodebuild test \
  -scheme "AppPorts" \
  -configuration Debug \
  -destination 'platform=macOS' \
  -derivedDataPath build \
  -only-testing:"AppPortsTests/AppMigrationServiceTests" \
  -only-testing:"AppPortsTests/AppScannerTests" \
  CODE_SIGN_IDENTITY="" \
  CODE_SIGNING_REQUIRED=NO \
  CODE_SIGN_ENTITLEMENTS="" \
  CODE_SIGNING_ALLOWED=NO

Protokollierungs-Tests

Ausführen, wenn PR AppLogger oder Diagnosefunktionalität betrifft:

bash
xcodebuild test \
  -scheme "AppPorts" \
  -configuration Debug \
  -destination 'platform=macOS' \
  -derivedDataPath build \
  -only-testing:"AppPortsTests/AppLoggerTests" \
  CODE_SIGN_IDENTITY="" \
  CODE_SIGNING_REQUIRED=NO \
  CODE_SIGN_ENTITLEMENTS="" \
  CODE_SIGNING_ALLOWED=NO

Lokalisierungsprüfung

Ausführen, wenn PR benutzersichtbaren Text, Menüs, Popups, Einstellungen oder Fehlermeldungen betrifft:

bash
xcodebuild test \
  -scheme "AppPorts" \
  -configuration Debug \
  -destination 'platform=macOS' \
  -derivedDataPath build \
  -only-testing:"AppPortsTests/LocalizationAuditTests" \
  CODE_SIGN_IDENTITY="" \
  CODE_SIGNING_REQUIRED=NO \
  CODE_SIGN_ENTITLEMENTS="" \
  CODE_SIGNING_ALLOWED=NO

Testübersicht

TestsuiteModuleWann ausführen
Kompilierungs-Smoke-CheckGesamtes ProjektErforderlich (CI erzwungen)
DataDirMoverTestsDatenverzeichnismigrationBei Beteiligung von DataDirMover
DataDirScannerTestsDatenverzeichnisscanningBei Beteiligung von DataDirScanner
AppMigrationServiceTestsApp-MigrationBei Beteiligung von AppMigrationService
AppScannerTestsApp-ScanningBei Beteiligung von AppScanner
AppLoggerTestsProtokollierung & DiagnoseBei Beteiligung von AppLogger
LocalizationAuditTestsLokalisierungBei benutzersichtbarem Text

Lokalisierung

  • Lokalisierungsanpassung wird empfohlen, ist aber für externe Contributor-PRs nicht obligatorisch
  • Wenn ein PR benutzersichtbaren Text hinzufügt, ändert oder löscht, können Sie gerne Localizable.xcstrings im selben PR aktualisieren
  • Wenn Sie es dieses Mal nicht bearbeiten, erklären Sie bitte kurz den Grund oder Zukunftsplan in der PR-Beschreibung
  • SwiftUI-Zeichenkettenliterale verwenden die LocalizedStringKey-API; AppKit/API-Zeichenketten verwenden .localized
  • Dynamischer Text sollte formatierte Schlüssel verwenden, z. B. String(format: "Sort: %@".localized, value)
  • Die Sprachliste wird in AppLanguageCatalog gepflegt; nicht auf mehreren Seiten duplizieren
  • Wenn ein PR Menüs, Popups, Einstellungen, Protokollexporte, Fehlermeldungen, Statustext oder Onboarding-Text ändert, wird empfohlen, mindestens die zh-Hans und en Anzeigeergebnisse zu prüfen

Weitere Regeln siehe: LOCALIZATION.md

Commit-Konventionen

  • Issue zuerst: Wichtige Funktionsänderungen sollten zuerst über Issue diskutiert werden
  • Atomar halten: Jeder PR sollte idealerweise nur ein Problem behandeln oder eine Funktion hinzufügen
  • Commit-Nachricht-Vorschläge:
    • feat: ... — Neue Funktion
    • fix: ... — Fehlerbehebung
    • docs: ... — Dokumentationsupdate
    • refactor: ... — Refactoring
    • test: ... — Test-bezogen

PR einreichen

  1. Stellen Sie sicher, dass Ihr Branch auf dem neuesten develop-Branch basiert
  2. Pushen Sie in Ihr Fork-Repository
  3. Reichen Sie einen Pull Request an AppPorts' develop-Branch ein
  4. Füllen Sie die erforderlichen Punkte in der PR-Vorlage aus
  5. Warten Sie auf bestandene CI-Checks und Code Review

💡 Merge-Effizienz verbessern

  • Halten Sie jeden PR fokussiert auf ein einzelnes Problem oder eine Funktion
  • Füllen Sie die Testsituation in der PR-Vorlage ehrlich aus
  • Fügen Sie Screenshots für UI-Änderungen bei

Willkommene Beitragsbereiche

  • Stabilitäts- und Leistungsverbesserungen für Kernlogik wie AppScanner
  • UI/UX-Optimierung, besonders Verbesserungen, die sich nativ für macOS anfühlen
  • Synchronisierung und Verbesserung der chinesischen und englischen Dokumentation
最近更新