Sourcegraph: Cody + Code Search
Use Cody, the AI coding assistant, plus Code Search directly from your JetBrains IDE.
- Cody is an AI coding assistant that helps you understand, write, and fix code faster. It uses advanced search to pull context from both local and remote codebases so that you can use context about APIs, symbols, and usage patterns from across your entire codebase at any scale, all from within your JetBrains IDE.
- Code Search lets you search code across all your repositories and code hosts—even the code you don’t have locally.
Cody Features
Autocomplete
Cody autocompletes single lines or whole functions in any programming language, configuration file, or documentation. It’s powered by the latest instant LLMs for accuracy and performance.
Chat
Answer questions about your entire codebase, specific files and symbols, or general programming topics.
For example, you can ask Cody:
- "How is our app's secret storage implemented on Linux?"
- "Where is the CI config for the web integration tests?"
- "Write a new GraphQL resolver for the AuditLog"
- "Why is the UserConnectionResolver giving an "unknown user" error, and how do I fix it?"
- "Add helpful debug log statements"
- "Make this work" (seriously, it often works—try it!)
Built-in prompts
Streamline your development process by using prompts to understand, improve, fix, document, and generate unit tests for your code. Cody supports one-click prompts such as:
- Explain code
- Generate unit tests
- Smell code
Choose your LLM
Cody users can select the LLM they want to use for chat and experiment to choose the best model for the job. Choose from multiple options including Claude 3.5 Sonnet, Gemini 1.5 Pro, and Mixtral 8x7B. Cody Pro users can also select Claude 3 Opus and GPT-4o. See the full list of model options here.
Administrators for Sourcegraph Enterprise instances can configure which model options to let team members choose from.
Usage
This plugin works for all Cody plans, including Cody Free, Cody Pro, and Cody Enterprise.
You can find detailed information about Cody's available plans on our website.
Programming language support
Cody works for any programming language because it uses LLMs trained on broad data. Cody works great with Python, Go, JavaScript, and TypeScript code.
Code search
Cody is powered by Sourcegraph’s code search and uses context of your codebase to extend its capabilities. By using context from your chosen repositories, Cody is able to give more accurate answers and generate idiomatic code.
For example:
- Ask Cody to generate an API call. Cody can gather context on your API schema to inform the code it writes.
- Ask Cody to find where in your codebase a specific component is defined. Cody can retrieve and describe the exact files where that component is written.
- Ask Cody questions that require an understanding of multiple files. For example, ask Cody how frontend data is populated in a React app; Cody can find the React component definitions to understand what data is being passed and where it originates.
Cody Enterprise
Cody Enterprise can retrieve context from your entire remote codebase using code search. This allows Cody to understand and answer questions about any of your code, even the repositories that don't live on your local machine.
Contact us to set up a trial of Cody Enterprise. If you’re an existing Sourcegraph Enterprise customer, contact your technical advisor.
Feedback
License
Cody's code is open source (Apache License 2.0).
Code Search features
- Search with Sourcegraph directly from inside the IDE
- Instantly search in all open source repos and your private code
- Peek into any remote repo in the IDE, without checking it out locally
URL sharing features
- Create URLs to specific code blocks to share them with your teammates
- Open your files on Sourcegraph
Supported IDEs
The plugin works with all JetBrains IDEs, including:
- IntelliJ IDEA
- IntelliJ IDEA Community Edition
- PhpStorm
- WebStorm
- PyCharm
- PyCharm Community Edition
- RubyMine
- AppCode
- CLion
- GoLand
- DataGrip
- Rider
- Android Studio
Versions 2022+ Recommended
Exception: Due to a Java bug, search doesn't work with IDE versions 2021.1 and 2021.2 for users with Apple Silicone CPUs.
Installation
- Open settings
- Windows: Go to
File | Settings
(or use Ctrl+Alt+S)
- Mac: Go to
IntelliJ IDEA | Preferences
(or use ⌘,)
- Click
Plugins
in the left-hand pane, then the Marketplace
tab at the top
- Search for
Sourcegraph
, then click the Install
button
- Make sure that the
git
command is available in your PATH. We’re going
to get rid of this dependency, but for now, the plugin
relies on it.
- Restart your IDE if needed
- To search with Sourcegraph, press Alt+S (⌥S on Mac).
- To share a link to your code or search through the website, right-click in the editor, and choose an action under
the
Sourcegraph
context menu item.
- To use your private Sourcegraph instance, open
Settings | Tools | Sourcegraph
and enter your URL and access token.
Settings
List of in-app settings and how to use them
- Authorization: List of accounts that can be used to interact with the plugin. Each account can be configured with:
- Server: The URL of your Sourcegraph instance. It can be configured with your private instance if you're adding an enterprise account.
- Token: See our user docs for a video guide on how to
create an access token.
- Custom request headers: Any custom headers to send with every request to Sourcegraph.
- Use any number of pairs:
header1, value1, header2, value2, ...
.
- Example:
Authorization, Bearer 1234567890, X-My-Header, My-Value
.
- Whitespace around commas doesn't matter.
- Default branch name: The branch to use if the current branch is not yet pushed to the remote.
- Usually "main" or "master", but can be any name
- Remote URL replacements: You can replace specific strings in your repo's remote URL.
- Use any number of pairs:
search1, replacement1, search2, replacement2, ...
.
- Pairs are replaced from left to right. Whitespace around commas doesn't matter.
- Important: The replacements are done on the Git remote-formatted URL, not the URL you see in the browser!
- Example replacement subject for Git:
git@github.com:sourcegraph/sourcegraph.git
- Example replacement subject for Perforce:
perforce@perforce.company.com:depot-name.perforce
- Anatomy of the replacement subjects:
- The username is not used.
- Between the
@
and the :
is the hostname
- After the
:
is the organization/repo name (for Git) or the depot name (for Perforce)
- The
.git
/ .perforce
extension is not used.
- When you do the replacements, make sure you keep the colon.
- In the case of a custom
repositoryPathPattern
being set for your code host in your private Sourcegraph instance,
you may try to set up a pattern that uses the @
, :
, and .git
/.perforce
boundaries, or specify a
replacement
pair for each repo or each depot you may have. If none of these solutions work for you, please raise this
at support@sourcegraph.com, and we'll prioritize making this more convenient.
- Globbing: Determines whether you can specify sets of filenames with wildcard characters.
- Cody completions: Enables/disables Cody completions in the editor.
- The completions are disabled by default.
Git remote setting
By default, the plugin will use the git remote called origin
to determine which repository on Sourcegraph corresponds
to your local repository. If your origin
remote doesn't match Sourcegraph, you may instead configure a Git remote by
the name of sourcegraph
. It will take priority when creating Sourcegraph links.
Setting levels
You can configure the plugin on three levels:
- Project-level On the project level you are able to configure your default account, default branch name and remote url replacements
- Application-level All other settings are stored here
System Properties
Autocomplete system properties
In order to disable newly introduced features we are giving an option to disable them via system properties:
- Disable formatting autocomplete elements
cody.autocomplete.enableFormatting=false
Managing Custom Keymaps
You can configure JetBrains to set custom keymaps for Sourcegraph actions:
- Open the JetBrains preferences panel and go to the Keymap page.
- Filter by "sourcegraph" to see actions supplied by this plugin.
- Now select an option to overwrite the keymap information and supply the new bindings.
Use Ollama models for Chat & Commands
Experience experimental chat and command support with Ollama running locally:
- Install and run Ollama.
- Set the OLLAMA_HOST to
0.0.0.0
.
- Please refer to the official Ollama docs for how to set environment variables on your platform.
- Set the OLLAMA_ORIGINS to
*
.
- Install or restart your Ollama app.
- Select a chat model (a model that includes
instruct
or chat
, e.g., codegemma:instruct, llama3:instruct) from the Ollama Library.
- Pull the chat model locally (Example:
ollama pull codegemma:instruct
).
- Once the chat model is downloaded successfully, open Cody in your IDE.
- Open a new Cody chat.
- In the new chat window, you should see the chat model you've pulled in the dropdown list at the top.
Note: You can run ollama list
in your terminal to see what Ollama models are currently available on your machine.
Questions & Feedback
If you have any questions, feedback, or bug report, we appreciate if you open an issue on GitHub.
Uninstallation
- Open settings
- Windows: Go to
File | Settings
(or use Ctrl+Alt+S)
- Mac: Go to
IntelliJ IDEA | Preferences
(or use ⌘,)
- Click
Plugins
in the left-hand pane, then the Installed
tab at the top
- Find
Sourcegraph
→ Right click → Uninstall
(or uncheck to disable)