Codeanpassung für Gemini Code Assist konfigurieren und verwenden

In diesem Dokument wird beschrieben, wie Sie Gemini Code Assist-Code anpassen indem Sie Gemini Code Assist mit Ihren privaten Code-Repositories verbinden. Mit dieser Funktion können Sie Codeempfehlungen erhalten, die auf den internen Bibliotheken, privaten APIs und Programmierstil Ihrer Organisation.

Hinweise

Auswählen, welche privaten Repositories verbunden werden

Als Best Practice sollten Sie Repositories verbinden, die:

  • Der Code sollte einen ähnlichen Stil oder eine ähnliche Struktur haben wie der Code, den Ihre Entwickler schreiben sollen.
  • Sie haben private Bibliotheken oder APIs, die Sie aus Ihrem aktuellen Codebasis.

Optional: Auswählen, welche Dateien nicht indexiert werden sollen

Standardmäßig indexiert die Codeanpassung alle unterstützte Codedateien in den angegebenen Repositories.

In vielen Fällen sollen bestimmte Dateien oder Unterstrukturen nicht verwendet werden. indexiert. Beispiel:

  • Hochsensible Informationen mit eingeschränktem Zugriff innerhalb Ihrer Organisation
  • Alter oder eingestellter Code
  • Automatisch generierter oder temporärer Code

Wenn Sie verhindern möchten, dass Code freigegeben wird, den Sie nicht indexieren möchten, können Sie mithilfe von Branch-Mustern den Zugriff auf Ihren Index steuern und einen stabilen Branch wie main verwenden.

Alternativ können Sie auch Dateien aus dem Index ausschließen, indem Sie Erstellen einer .aiexclude-Datei.

Index erstellen

Für die Codeanpassung wird ein Index verwendet, um Ihr Repository zu analysieren und zu parsen. So können schneller Vorschläge zur Codegenerierung und Suchanfragen durchgeführt werden.

Verwenden Sie zum Erstellen des Index in einer Shell-Umgebung die Methode gemini code-repository-indexes create-Befehl:

gcloud gemini code-repository-indexes create INDEX_NAME \
    --project=PROJECT_ID \
    --location=REGION

Ersetzen Sie Folgendes:

  • INDEX_NAME: Der Name des Index.
  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
  • REGION: eine unterstützte Region, wie in den Bevor Sie beginnen dieser Seite, in Developer Connect in Ihrem Google Cloud-Konto Projekt arbeiten.

Die Indexerstellung dauert in der Regel 30 Minuten, kann aber auch bis zu einer Stunde dauern.

Google begrenzt die Anzahl der Code-Repository-Indexe auf einen Index pro Projekt und Unternehmen. Wenn Sie mehr Code-Repository-Indexe benötigen, können Sie Fordern Sie ein höheres Kontingent an.

Zugriff auf Index mithilfe von Repository-Gruppen steuern

Verwenden Sie in einer Shell-Umgebung den Befehl gemini code-repository-indexes repository-groups create, um eine Repositorygruppe zu erstellen:

    gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
        --project=PROJECT_ID \
        --location=REGION \
        --code-repository-index=INDEX_NAME \
        --repositories='[{"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "BRANCH_NAMES"}]'

Ersetzen Sie Folgendes:

  • REPOSITORY_GROUP: Name der Repository-Gruppe, z. B. default.
  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
  • REGION: eine unterstützte Region, wie in den Bevor Sie beginnen dieser Seite, die Sie in Developer Connect in Ihrem Google Cloud-Konto Projekt arbeiten.
  • INDEX_NAME: Name des Index, den Sie in einem vorherigen Schritt zum Erstellen eines Index erstellt haben.
  • REPOSITORY_RESOURCE_NAME: Name des Repositorys in der Developer Connect-Verbindung. Um den Namen des Repositorys Developer Connect-Seite in in der Google Cloud Console und suchen Sie auf dem Tab Repositories nach Verbindungs-ID in der Spalte Verbindung der Tabelle. Wenn Sie den Ressourcennamen kopieren möchten, klicken Sie auf das Dreipunkt-Menü more_vert und wählen Sie Ressourcenpfad kopieren aus.
  • BRANCH_NAMES: Name der Branches, die Sie indexieren möchten wie main|dev.

Sie können auch eine Repository-Gruppe mit Repositories erstellen, die in einer JSON-Datei (oder YAML) angegeben, die wie folgt formatiert ist:

JSON

[
  {
      "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
  },
  {
      "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
  }
]

YAML

- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev

- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev

Zum Erstellen einer Repository-Gruppe basierend auf einer JSON- oder YAML-Datei in einer Shell verwenden Sie die Methode gemini code-repository-indexes repository-groups create-Befehl:

JSON

gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME \
    --repositories=FILEPATH.json

YAML

gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME \
    --repositories=FILEPATH.yaml

IAM-Rolle für die Repository-Gruppe in einem Projekt zuweisen

Sie erhalten nur Vorschläge von Repositories im Index. Jedes Repository gehört zu einer oder mehreren Repositorygruppen. Damit Sie auf Vorschläge zugreifen können, müssen Sie der Repository-Gruppe die IAM-Rolle „Cloud AI Companion Repository Groups User“ (roles/cloudaicompanion.repositoryGroupsUser) zuweisen, die die erforderliche IAM-Berechtigung cloudaicompanion.repositoryGroups.user enthält. Das geht auf folgende Arten:

  • Gewähren Sie Hauptkonten die Berechtigung zum Zugriff auf den gesamten Index.
  • Hauptkonten Zugriff auf eine Teilmenge des Index gewähren.

Hauptkonten die Berechtigung zum Zugriff auf den gesamten Index gewähren

  1. Zum Binden einer IAM-Richtlinie für ein Projekt in einer Shell-Umgebung verwenden Sie die projects add-iam-policy-binding-Befehl:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member='PRINCIPAL' \
        --role='roles/cloudaicompanion.repositoryGroupsUser'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts, in dem sich das Repository befindet Gruppe befindet.
    • PRINCIPAL: die E-Mail-Adresse des Hauptkontos, das Zugriff benötigt, z. B. user:test-user@gmail.com für eine Einzelperson oder group:admins@example.com für eine Gruppe.

    Weitere Informationen finden Sie unter gcloud projects set-iam-policy.

  2. Wenn Sie aufgefordert werden, eine Bedingung anzugeben, geben Sie None ein.

Hauptkonten Zugriff auf einen Teil des Index gewähren

Sie können mehrere Repository-Gruppen erstellen und IAM-Rollen zuweisen IAM-Hauptkonten zugewiesen sind.

Um eine IAM-Richtlinie einzurichten, müssen Sie die JSON- oder YAML-Datei der IAM-Richtlinie vorbereiten. Diese Datei enthält eine Liste der IAM-Gruppen und zugewiesenen Rollen. Beispiel:

bindings:
- members:
  - group:my-group@example.com
  - user:test-user@example.com
  role: roles/cloudaicompanion.repositoryGroupsUser

Weitere Informationen und Syntax finden Sie unter „allow“-Richtlinien.

Verwenden Sie zum Festlegen der IAM-Richtlinie in einer Shell-Umgebung die Methode gemini code-repository-indexes repository-groups set-iam-policy-Befehl:

gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME

Ersetzen Sie Folgendes:

Indexierungsstatus prüfen

Je nach Anzahl der zu indexierenden Repositories kann die Indexierung bis zu 24 Stunden dauern. Bei großen Repositories kann die Indexierung länger dauern. Die Indexierung erfolgt alle 24 Stunden, wobei Änderungen übernommen werden. die im Repository erstellt wurden.

  1. Rufen Sie in der Google Cloud Console den Log-Explorer auf.

    Zum Log-Explorer

  2. Verwenden Sie den Filter für Lognamen, um indexing-Logs aufzurufen, oder suchen Sie mit dem folgenden Befehl nach den Indexierungslogs:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID, Repository-Gruppe befindet.

    Führen Sie beispielsweise folgenden Befehl aus, um Fehler in den indexing-Logs anzusehen: Befehl:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    

    Weitere Informationen finden Sie unter Logging-Abfragesprache.

  3. Prüfen Sie die zugehörigen Indexierungsstatus, z. B.:

    • Beginn der Repository-Indexierung, z. B. Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • Ende der Indexierung eines einzelnen Repositorys. Beispiel:
      • Erfolgreich: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • Fehler: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • Ende der Repository-Indexierung. Beispiel:
      • Erfolgreich: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • Fehler: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 1. Repositories that were not successfully fetched will be retried in the next run.

    Im Indexstatus ist REPOSITORY_NAME das Repository. die Sie überprüfen möchten.

  4. Prüfen Sie die zugehörigen Indexierungsfehler, z. B.:

    • Repository konnte nicht abgerufen werden.
    • Repositorydateien konnten nicht aufgelistet werden.
    • Repository-Informationen konnten nicht aus dem Index abgerufen werden.
    • Dateien konnten nicht aus dem Index abgerufen werden.
    • Interner Fehler.

Codeanpassung verwenden

Nachdem Sie die Codeanpassung eingerichtet haben, sehen Nutzer Vorschläge zur Codevervollständigung und Codegenerierung, die neben den Ergebnissen aus der vollständigen Codebasis auch auf von Ihnen indexiertem privaten Code basieren können.

Codeanpassung deaktivieren

  1. Um in einer Shell-Umgebung alle Repository-Gruppen für den aktuellen Index aufzulisten, verwenden Sie die gemini code-repository-indexes repository-groups list-Befehl:

    gcloud gemini code-repository-indexes repository-groups list --location=REGION \
        --project=PROJECT_ID \
        --code-repository-index=INDEX_NAME --uri
    

    Ersetzen Sie Folgendes:

    • REGION: Eine unterstützte Region, wie im Abschnitt Vorab auf dieser Seite angegeben, die Sie in Developer Connect in Ihrem Google Cloud-Projekt konfiguriert haben.
    • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
    • INDEX_NAME: Name des Index, den Sie in einem vorherigen Schritt zum Erstellen eines Index erstellt haben.
  2. Verwenden Sie zum Löschen einer Repository-Gruppe aus dem aktuellen Index die Methode gemini code-repository-indexes repository-groups delete-Befehl:

    gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \
        --location=REGION \
        --project=PROJECT_ID \
        --code-repository-index=INDEX_NAME
    
  3. Wiederholen Sie Schritt 3 für jede Repository-Gruppe, bis Sie alle Repository-Gruppen aus dem Index gelöscht haben.

  4. Optional: Verwenden Sie zum Löschen des Index in einer Shell-Umgebung die Methode gemini code-repository-indexes delete-Befehl:

    gcloud gemini code-repository-indexes delete INDEX_NAME \
        --location=REGION \
        --project=PROJECT_ID
    

Nächste Schritte