Project: /_project.yaml
Book: /_book.yaml

# Searching the codebase

## Product overview {:#product-overview}

Bazel's [code search and source browsing interface](https://source.bazel.build)
is a web-based tool for browsing Bazel source code repositories. You can
use these features to navigate among different repositories, branches, and
files. You can also view history, diffs, and blame information.

## Getting started {:#getting-started}

Note: For the best experience, use the latest version of Chrome, Safari, or
Firefox.

To access the code search and source browsing interface, open
[https://source.bazel.build](https://source.bazel.build) in your web browser.

The main screen appears. This screen contains the following components:

1. The Breadcrumb toolbar. This toolbar displays your current location in the
repository and allows you to move quickly to another location such as another
repository, or another location within a repository, such as a file, branch, or
commit.

1. A list of repositories that you can browse.

At the top of the screen is a search box. You can use this box to search for
specific files and code.

## Working with repositories {:#working-with-repositories}

### Opening a repository {:#opening-a-repository}

To open a repository, click its name from the main screen.

Alternatively, you can use the Breadcrumb toolbar to browse for a
specificrepository. This toolbar displays your current location in the
repository and allows you to move quickly to another location such as another
repository, or another location within a repository, such as a file, branch, or
commit.

### Switch repositories {:#switch-repositories}

To switch to a different repository, select the repository from the Breadcrumb toolbar.

### View a repository at a specific commit {:#view-a-repository-at-a-specific-commit}

To view a repository at a specific commit:

1. From the view of the repository, select the file.
1. From the Breadcrumb toolbar, open the **Branch** menu.
1. In the submenu that appears, click **Commit**.
1. Select the commit you want to view.

The interface now shows the repository as it existed at that commit.

### Open a branch, commit, or tag {:#open-a-branch-commit-or-tag}

By default, the code search and source browsing interface opens a repository to
the default branch.  To open a different branch, from the Breadcrumb toolbar,
click the **Branch/Commit/Tag** menu. A submenu opens, allowing you to select a
branch using a branch name, a tag name, or through a search box.

*  To select a branch using a branch name, select **Branch** and then click the
   name of the branch.
*  To select a branch using a tag name, select **Tag** and
   then click the tag name.
*  To select a branch using a commit id, select **Commit** and then click the
   commit id.
*  To search for a branch, commit, or tag, select the corresponding item and
   type a search term in the search box.

## Working with files {:#working-with-files}

When you select a repository from the main screen, the screen changes to display
a view of that repository. If a README file exists, its contents appear in the
file pane, located on the right side of the screen. Otherwise, a list of
repository's files and folders appear.  On the left side of the screen is a tree
view of the repository's files and folders. You can use this tree to browse and
open specific files.

Notice that, when you are viewing a repository, the Breadcrumb toolbar now has
three components:

*  A **Repository** menu, from which you can select different repositories
*  A **Branch/Commit/Tag** menu, from which you can select specific branches,
   tags, or commits
*  A **File path** box, which displays the name of the current file or folder
   and its corresponding path

### Open a file {:#open-a-file}

You can open a file by browsing to its directory and selecting it. The view of
the repository updates to show the contents of the file in the file pane, and
its location in the repository in the tree pane.

### View file changes {:#view-file-changes}

To view file changes:

1. From the view of the repository, select the file.
1. Click **BLAME**, located in the upper-right corner.

The file pane updates to display who made changes to the file and when.

### View change history {:#view-change-history}

To view the change history of a file:

1.  From the view of the repository, select the file.
1.  Click **HISTORY**, located in the upper-right corner.
    The **Change history** pane appears, showing the commits for this file.

### View code reviews {:#view-code-reviews}

For Gerrit code reviews, you can open the tool directly from the Change History pane.

To view the code review for a file:

1. From the view of the repository, select the file.
1. Click **HISTORY**, located in the upper-right corner. The Change History pane
   appears, showing the commits for this file.
1. Hover over a commit. A **More** button (three vertical dots) appears.
1. Click the **More** button.
1. Select **View code review**.

The Gerrit Code Review tool opens in a new browser window.

### Open a file at a specific commit {:#open-a-file-at-a-specific-commit}

To open a file at a specific commit:

1. From the view of the repository, select the file.
1. Click **HISTORY**, located in the upper-right corner. The Change History pane
   appears, showing the commits for this file.
1. Hover over a commit. A **VIEW** button appears.
1. Click the **VIEW** button.

### Compare a file to a different commit {:#compare-a-file-to-a-different-commit}

To compare a file at a different commit:

1. From the view of the repository, select the file. To compare from two
   different commits, first open the file at that commit.
1. Hover over a commit. A **DIFF** button appears.
1. Click the **DIFF** button.

The file pane updates to display a side-by-side comparison between the two
files. The oldest of the two commits is always on the left.

In the Change History pane, both commits are highlighted, and a label indicates
if the commit is displayed on the left or the right.

To change either file, hover over the commit in the Change History pane. Then,
click either the **Left** or **Right** button to have the open the commit on the
left or right side of the diff.

### Browsing cross references {:#browsing-cross-references}

Another way to browse source repositories is through the use of cross
references. These references appear automatically as hyperlinks within a given
source file.

To make cross references easier to identify, click **Cross References**,
located in the upper-right corner. This option displays an underline below all
cross references in a file.

**Note:** If **Cross References** is grayed out, it indicates that
cross references are not available for that file.

Click a cross reference to open the Cross Reference pane. This pane contains
two sections:

* A **Definition** section, which lists the file or files that define the
  reference
* A **References** section, which lists the files in which the reference also
  appears

Both sections display the the name of the file, as well as the line or lines
that contains the reference. To open a file from the Cross Reference pane,
click the line number entry. The file appears in a new section of the pane,
allowing you to continue to browse the file while keeping the original file
in view.

You can continue to browse cross references using the Cross Reference pane, just
as you can in the File pane. When you do, the pane displays a breadcrumb trail,
which you can use to navigate between different cross references.

## Searching for code {:#search}

You can search for specific files or code snippets using the search box located
at the top of the screen. Searches are always against the default branch.

All searches use [RE2 regular expressions](https://github.com/google/re2/wiki/Syntax){: .external}
by default. If you do not want to use regular expressions, enclose your search
in double quotes ( " ).

**Note:** To quickly search for a specific file, either add a backslash in front
of the period, or enclose the entire file name in quotes.

```
foo\.java
"foo.java"
```

You can refine your search using the following filters.

<table border="1px">
<thead>
<tr>
<th style="padding:5px"><strong>Filter</strong></th>
<th style="padding:5px"><strong>Other options</strong></th>
<th style="padding:5px"><strong>Description</strong></th>
<th style="padding:5px"><strong>Example</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:5px">lang:</td>
<td style="padding:5px">language:</td>
<td style="padding:5px">Perform an exact match by file language.</td>
<td style="padding:5px">lang:java test</td>
</tr>
<tr>
<td style="padding:5px">file:</td>
<td style="padding:5px">filepath:<br>
path:<br>
f:</td>
<td style="padding:5px"></td>
<td style="padding:5px"></td>
</tr>
<tr>
<td style="padding:5px">case:yes</td>
<td style="padding:5px"></td>
<td style="padding:5px">Make the search case sensitive. By default, searches are not case-sensitive.</td>
<td style="padding:5px">case:yes Hello World</td>
</tr>
<tr>
<td style="padding:5px">class:</td>
<td style="padding:5px"></td>
<td style="padding:5px">Search for a class name.</td>
<td style="padding:5px">class:MainClass</td>
</tr>
<tr>
<td style="padding:5px">function:</td>
<td style="padding:5px">func:</td>
<td style="padding:5px">Search for a function name.</td>
<td style="padding:5px">function:print</td>
</tr>
<tr>
<td style="padding:5px">-</td>
<td style="padding:5px"></td>
<td style="padding:5px">Negates the term from the search.</td>
<td style="padding:5px">hello -world</td>
</tr>
<tr>
<td style="padding:5px">\</td>
<td style="padding:5px"></td>
<td style="padding:5px">Escapes special characters, such as ., \, or (.</td>
<td style="padding:5px">run\(\)</td>
</tr>
<tr>
<td style="padding:5px">"[term]"</td>
<td style="padding:5px"></td>
<td style="padding:5px">Perform a literal search.</td>
<td style="padding:5px">"class:main"</td>
</tr>
</tbody>
</table>

## Additional Support {:#additional-support}

To report an issue, click the **Feedback** button that appears in the top
right-hand corner of the screen and enter your feedback in the provided form.
