| 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. |