Zum Inhalt

Quellegraph Cheat Blatt

generieren

Überblick

Sourcegraph ist eine universelle Codesuche und Navigationsplattform, die Entwicklern hilft, Änderungen über ihre gesamte Codebase zu verstehen, zu beheben und zu automatisieren. Es bietet semantische Codesuche, Cross-Repository-Navigation und Code Intelligence für Teams, die mit großen, verteilten Codebases arbeiten.

ZEIT Note: Erhältlich als Cloud-Service (sourcegraph.com) oder selbstgehostete Bereitstellung. Free tier verfügbar mit Nutzungslimits.

Installation und Inbetriebnahme

Cloud Service

```bash

Access Sourcegraph Cloud

Visit: https://sourcegraph.com

Sign up with GitHub, GitLab, or email

Connect repositories for indexing

```_

Selbstbefriedigung

```bash

Docker Compose deployment

git clone https://github.com/sourcegraph/deploy-sourcegraph-docker.git cd deploy-sourcegraph-docker docker-compose up -d

Kubernetes deployment

kubectl apply -f https://raw.githubusercontent.com/sourcegraph/deploy-sourcegraph/master/base/sourcegraph.yaml

Single container (development)

docker run -d \ --name sourcegraph \ -p 7080:7080 \ -v ~/.sourcegraph/config:/etc/sourcegraph \ -v ~/.sourcegraph/data:/var/opt/sourcegraph \ sourcegraph/server:latest ```_

Browser-Erweiterungen

```bash

Chrome/Edge extension

Visit Chrome Web Store

Search "Sourcegraph"

Install browser extension

Firefox extension

Visit Firefox Add-ons

Search "Sourcegraph"

Install extension

```_

Syntax suchen

Grundlegende Suche

```bash

Simple text search

hello world

Case-sensitive search

case:yes Hello World

Regular expression search

/func\s+\w+(/

Exact match

"exact phrase" ```_

Repository Filter

```bash

Search in specific repository

repo:github.com/facebook/react useState

Search in multiple repositories

repo:facebook/react|vue/vue useState

Exclude repositories

-repo:test-repo main function

Search by repository pattern

repo:.*-frontend$ component ```_

Dateifilter

```bash

Search in specific file types

file:.js$ function

Search in specific files

file:package.json dependencies

Exclude file types

-file:.test.js$ function

Search in file paths

file:src/components/ useState ```_

Sprachenfilter

```bash

Search in specific language

lang:javascript async function

Search in multiple languages

| lang:python | go | rust error handling |

Exclude languages

-lang:test function definition ```_

Inhalt Filter

```bash

Search function definitions

type:symbol function_name

Search for commits

type:commit bug fix

Search for diffs

type:diff added new feature

Search symbols only

type:symbol class MyClass ```_

Erweiterte Suche

Strukturelle Suche

```bash

Find function calls with patterns

:func

Find if statements

if (:[condition]) { :[body] }

Find class definitions

class :[name] extends :[parent] { :[body] }

Find import statements

import :[imports] from ':[module]' ```_

Zeitbasierte Suche

```bash

Search commits after date

type:commit after:"2024-01-01" security fix

Search commits before date

type:commit before:"2024-12-31" refactor

Search commits in date range

type:commit after:"2024-01-01" before:"2024-06-30" feature ```_

Autor und Commit Filter

```bash

Search by commit author

type:commit author:john.doe bug fix

Search by committer

type:commit committer:jane.smith merge

Search commit messages

type:commit message:"breaking change"

Search by commit hash

type:commit 7f8a9b2c ```_

Boolean Betreiber

```bash

AND operator (default)

function AND async

OR operator

function OR method

NOT operator

function NOT test

Grouping with parentheses

(function OR method) AND async ```_

Code Intelligence

Zur Definition

```bash

Navigate to symbol definition

Click on symbol in code view

Or use Ctrl+Click (with browser extension)

Find all references

Right-click on symbol

Select "Find references"

```_

Cross-Repository Navigation

```bash

Find implementations across repos

Search for interface or abstract class

View implementations in different repositories

Trace dependencies

Click on import statements

Navigate to source in external repositories

```_

Symbolsuche

```bash

Find symbol definitions

type:symbol MyClass

Find symbols by type

type:symbol function getUserData

Find symbols in specific repository

repo:myorg/myrepo type:symbol ApiClient ```_

Browser-Erweiterung

Integration von GitHub

```bash

Features on GitHub:

- Code intelligence on files

- Go to definition

- Find references

- Search across repositories

- Hover tooltips for symbols

```_

Integration von GitLab

```bash

Features on GitLab:

- Code navigation

- Symbol definitions

- Cross-repository search

- Merge request code intelligence

```_

Konfiguration

```bash

Extension settings:

1. Click extension icon

2. Configure Sourcegraph URL

3. Set authentication token

4. Enable/disable features

```_

API Verwendung

GraphQL API

```bash

API endpoint

https://sourcegraph.com/.api/graphql

Authentication header

Authorization: token YOUR_ACCESS_TOKEN ```_

Suche API

graphql query SearchQuery($query: String!) { search(query: $query) { results { results { ... on FileMatch { file { path repository { name } } lineMatches { lineNumber line } } } } } }_

Repository API

graphql query RepositoryQuery($name: String!) { repository(name: $name) { name url description defaultBranch { name } commit(rev: "HEAD") { oid message } } }_

CURL Beispiele

```bash

Search repositories

curl -X POST \ -H "Authorization: token YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"query": "query { search(query: \"repo:myorg/myrepo function\") { results { results { __typename } } } }"}' \ https://sourcegraph.com/.api/graphql

Get repository information

curl -X POST \ -H "Authorization: token YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"query": "query { repository(name: \"github.com/facebook/react\") { name description } }"}' \ https://sourcegraph.com/.api/graphql ```_

CLI Werkzeugmaschinen

Installation

```bash

Install Sourcegraph CLI

macOS

brew install sourcegraph/src-cli/src-cli

Linux

curl -L https://github.com/sourcegraph/src-cli/releases/download/3.43.2/src-cli_3.43.2_linux_amd64.tar.gz | tar xz sudo mv src /usr/local/bin/

Windows

Download from GitHub releases

Add to PATH

```_

Authentication

```bash

Configure CLI

src login https://sourcegraph.com

Set access token

src config set endpoint https://sourcegraph.com src config set access-token YOUR_ACCESS_TOKEN

Verify configuration

src config get ```_

Suchbefehle

```bash

Basic search

src search "function useState"

Search with filters

src search "repo:facebook/react useState"

Output as JSON

src search -json "async function"

Search with context

src search -context 3 "error handling" ```_

Repository Management

```bash

List repositories

src repos list

Add repository

src repos add github.com/myorg/myrepo

Remove repository

src repos remove github.com/myorg/myrepo

Sync repository

src repos sync github.com/myorg/myrepo ```_

Batch Veränderungen

Batch-Änderungen erstellen

```bash

Create batch change spec

cat > batch-change.yaml << EOF name: update-dependencies description: Update package.json dependencies on: - repositoriesMatchingQuery: file:package.json steps: - run: npm update container: node:16 - run: npm audit fix container: node:16 changesetTemplate: title: Update npm dependencies body: | This batch change updates npm dependencies to their latest versions and fixes security vulnerabilities. branch: update-dependencies commit: message: Update npm dependencies and fix security issues published: false EOF

Apply batch change

src batch apply -f batch-change.yaml ```_

Verwaltung von Batch-Änderungen

```bash

List batch changes

src batch list

Preview batch change

src batch preview -f batch-change.yaml

Apply batch change

src batch apply -f batch-change.yaml

Close batch change

src batch close BATCH_CHANGE_ID ```_

Beispiele für Batch Change

```yaml

Update copyright headers

name: update-copyright description: Update copyright year in all files on: - repositoriesMatchingQuery: file:.js$ OR file:.py$ OR file:.go$ steps: - run: | find . -name ".js" -o -name ".py" -o -name "*.go" | \ xargs sed -i 's/Copyright 2023/Copyright 2024/g' container: alpine:latest changesetTemplate: title: Update copyright year to 2024 body: Automated update of copyright year from 2023 to 2024 branch: update-copyright-2024 commit: message: Update copyright year to 2024 ```_

Code Monitoring

Monitore einrichten

```bash

Create code monitor

1. Go to Sourcegraph web interface

2. Navigate to Code Monitoring

3. Click "Create monitor"

4. Define search query

5. Set notification preferences

```_

Beispiele für Monitore

```bash

Monitor for security vulnerabilities

query: "TODO.security|FIXME.vulnerability" description: "Track security-related TODOs and FIXMEs"

Monitor for deprecated API usage

query: "deprecated.api|legacy.function" description: "Track usage of deprecated APIs"

Monitor for performance issues

query: "slow.query|performance.issue" description: "Track performance-related comments" ```_

Mitteilungen

```bash

Supported notification channels:

- Email

- Slack

- Microsoft Teams

- Webhook

- PagerDuty

```_

Code Insights

Insights erstellen

```bash

Language distribution insight

{ "title": "Language Distribution", "type": "lang-stats", "repositories": ["github.com/myorg/myrepo"], "series": [ { "name": "JavaScript", "query": "lang:javascript", "stroke": "#f1e05a" }, { "name": "Python", "query": "lang:python", "stroke": "#3572A5" } ] } ```_

Migrationsverfolgung

```bash

Track migration progress

{ "title": "React Class to Hooks Migration", "type": "search-based", "repositories": ["github.com/myorg/frontend"], "series": [ { "name": "Class Components", "query": "class.extends.Component", "stroke": "#ff0000" }, { "name": "Functional Components", "query": "const.=.\(.\).=>|function.*\(", "stroke": "#00ff00" } ] } ```_

Unternehmensmerkmale

SAML/SSO Integration

```bash

Configure SAML authentication

1. Admin panel > Authentication

2. Enable SAML

3. Configure identity provider

4. Set attribute mappings

5. Test authentication

```_

Repository Berechtigungen

```bash

Sync permissions from code host

GitHub: Uses repository visibility and team permissions

GitLab: Uses project visibility and group permissions

Bitbucket: Uses repository permissions

Manual permission configuration

Admin panel > Repositories > Permissions

Set user/team access levels

```_

Audit Logging

```bash

Enable audit logging

Admin panel > Audit log

Configure log retention

Export logs for compliance

Log events include:

- User authentication

- Repository access

- Search queries

- Configuration changes

```_

Leistungsoptimierung

Search Performance

```bash

Optimize search queries:

- Use specific repository filters

- Limit file type searches

- Use structural search for complex patterns

- Avoid overly broad regex patterns

```_

Index Management

```bash

Repository indexing status

Admin panel > Repositories

View indexing progress

Force re-indexing if needed

Index configuration

Adjust indexing frequency

Set resource limits

Configure language servers

```_

Skalierung von Erwägungen

```bash

Horizontal scaling:

- Multiple frontend instances

- Separate search backend

- Distributed indexing

- Load balancing

Resource requirements:

- CPU: 4+ cores per 1000 repositories

- Memory: 8GB+ per instance

- Storage: SSD recommended for indexes

```_

Fehlerbehebung

Gemeinsame Themen

```bash

Search not returning results:

1. Check repository indexing status

2. Verify search syntax

3. Check repository permissions

4. Review filter settings

Slow search performance:

1. Use more specific queries

2. Add repository filters

3. Check system resources

4. Review index health

```_

Debug Information

```bash

Enable debug logging

Admin panel > Monitoring

Set log level to debug

Check application logs

Search debug info

Add &trace;=1 to search URL

View query execution details

Analyze performance metrics

```_

Gesundheitschecks

```bash

System health endpoints

curl https://sourcegraph.com/-/healthz

Repository sync status

curl https://sourcegraph.com/-/debug/repos

Search backend status

curl https://sourcegraph.com/-/debug/search ```_

Best Practices

Suchstrategien

```bash

Start broad, then narrow:

1. Begin with general terms

2. Add repository filters

3. Refine with file types

4. Use structural search for precision

Use appropriate search types:

- Text search for general queries

- Symbol search for definitions

- Structural search for patterns

- Commit search for history

```_

Repository Organisation

```bash

Organize repositories logically:

- Group related repositories

- Use consistent naming conventions

- Tag repositories by team/project

- Set appropriate permissions

```_

Team Adoption

```bash

Encourage team usage:

- Provide training sessions

- Share useful search patterns

- Create documentation

- Set up monitoring for common issues

- Integrate with existing workflows

```_

Ressourcen

Dokumentation

%20Gemeinschaft

-%20[Quellegraph%20Discord](_LINK_9__ -%20GitHub%20Diskussionen - [Gemeinschaftsforum](LINK_9

%20Ausbildung

-%20[Quelltext%20lernen](LINK_9 -%20Search%20Tutorials - (LINK9)