---
layout: documentation
title: Bazel Query How-To
---
<h1>Bazel query how-to</h1>

<p>
  This is a quick tutorial to get you started using Bazel's query language to
  trace dependencies in your code.
</p>

  For a language details and <code>--output</code> flag details, please see the reference
  manuals, <a href="query.html">Bazel query reference</a> and <a href="cquery.html">Bazel cquery reference</a>.
  You can get help by typing <code>bazel help query</code> or <code>bazel help cquery</code> on the command line.

<p>
  To execute a query while ignoring errors such as missing targets, use the
  <code>--keep_going</code> flag.
</p>

<h2>Contents</h2>

<ul>
<li><a href="#Finding_the_Dependencies_of_a_Ru">Finding the Dependencies of a Rule</a></li>
<li><a href="#Tracing_the_Dependency_Chain_bet">Tracing the Dependency Chain between Two
Packages</a>
<ul><li><a href="#Aside_implicit_dependencies">Aside: implicit dependencies</a></li></ul></li>
<li><a href="#Reverse_Dependencies">Reverse Dependencies</a></li>
<li><a href="#Miscellaneous_Uses">Miscellaneous Uses</a>
<ul><li><a href="#What_exists_">What exists ...</a>
<ul><li><a href="#What_packages_exist_beneath_foo_">What packages exist beneath
<code>foo</code>?</a></li>
<li><a href="#What_rules_are_defined_in_the_foo">What rules are defined in the <code>foo</code>
package?</a></li>
<li><a href="#What_files_are_generated_by_rule">What files are generated by rules in the <code>foo</code>
package?</a></li>
<li><a href="#What_s_the_set_of_BUILD_files_ne">What's the set of BUILD files needed to build
<code>//foo</code>?</a></li>
<li><a href="#What_are_the_individual_tests_th">What are the individual tests that a <code>test_suite</code> expands
to?</a>
<ul><li><a href="#Which_of_those_are_C_tests_">Which of those are C++ tests?</a></li>
<li><a href="#Which_of_those_are_small_Medium_">Which of those are small? Medium?
Large?</a></li></ul></li>
<li><a href="#What_are_the_tests_beneath_foo_t">What are the tests beneath <code>foo</code> that match a
pattern?</a></li>
<li><a href="#What_package_contains_file_java_">What package contains file
<code>path/to/file/bar.java</code>?
</a></li>
<li><a href="#What_is_the_build_label_for_java">What is the build label for
<code>path/to/file/bar.java</code>?
</a></li>
<li><a href="#What_build_rule_contains_file_ja">What build rule contains file
<code>path/to/file/bar.java</code> as a
source?</a></li></ul></li>
<li><a href="#What_package_dependencies_exist_">What package dependencies exist ...</a>
<ul><li><a href="#What_packages_does_foo_depend_on">What packages does <code>foo</code> depend on? (What do I need to check out
to build <code>foo</code>)</a></li>
<li><a href="#What_packages_does_the_foo_">What packages does the <code>foo</code> tree depend on, excluding
<code>foo/contrib</code>?</a></li></ul></li>
<li><a href="#What_rule_dependencies_exist_">What rule dependencies exist ...</a>
<ul><li><a href="#What_genproto_rules_does_bar_">What genproto rules does bar depend
upon?</a></li>
<li><a href="#Find_the_definition_of_some_JNI_">Find the definition of some JNI (C++) library that is transitively
depended upon by a Java binary rule in the servlet
tree.</a>
<ul><li><a href="#_Now_find_the_definitions_of_all">...Now find the definitions of all the Java binaries that
depend on them</a></li></ul></li></ul></li>
<li><a href="#What_file_dependencies_exist_">What file dependencies exist ...</a>
<ul><li><a href="#What_s_the_complete_set_of_Java_">What's the complete set of Java source files required to build
QUX?</a></li>
<li><a href="#What_is_the_complete_set_of_Java">What is the complete set of Java source files required to build
QUX's tests?</a></li></ul></li>
<li><a href="#What_differences_in_dependencies">What differences in dependencies between X and Y exist
...</a>
<ul><li><a href="#What_targets_does_foo_depend_on_">What targets does <code>//foo</code> depend on that <code>//foo:foolib</code> does
not?</a></li>
<li><a href="#What_C_libraries_do_the_foo_test">What C++ libraries do the <code>foo</code> tests depend on that the <code>//foo</code>
production binary does <em>not</em> depend
on?</a></li></ul></li>
<li><a href="#Why_does_this_dependency_exist_">Why does this dependency exist ...</a>
<ul><li><a href="#Why_does_bar_depend_on_groups">Why does <code>bar</code> depend on
<code>groups2</code>?</a></li>
<li><a href="#Show_me_a_path_from_docker_updater">Show me a path from <code>docker/updater:updater_systest</code> (a <code>py_test</code>)
to some <code>cc_library</code> that it depends
upon:</a></li>
<li><a href="#Why_does_library_photos_frontend">Why does library <code>//photos/frontend:lib</code> depend on two variants of
the same library <code>//third_party/jpeglib</code> and
<code>//third_party/jpeg</code>?</a></li></ul></li>
<li><a href="#What_depends_on_">What depends on ...</a>
<ul><li><a href="#What_rules_under_bar_depend_o">What rules under bar depend on Y?</a></li>
<li><a href="#What_are_the_intra_package_direct_rdeps">What targets directly depend on T, in T's
package</a></li></ul></li>
<li><a href="#How_do_I_break_a_dependency_">How do I break a dependency ...</a>
<ul><li><a href="#What_dependency_paths_do_I_have_">What dependency paths do I have to break to make <code>bar</code> no longer
depend on X?</a></li></ul></li>
<li><a href="#Misc_">Misc ...</a>
<ul><li><a href="#How_many_sequential_steps_are_th">How many sequential steps are there in the <code>ServletSmokeTests</code>
build?</a></li></ul></li></ul></li>
</ul>

<p><a name="Finding_the_Dependencies_of_a_Ru"></a></p>

<h2>Finding the Dependencies of a Rule</h2>

<p>To see the dependencies of <code>//foo</code>, use the
<code>deps</code> function in bazel query:</p>

<pre>
$ bazel query "deps(//foo)"
//foo:foo
//foo:foo-dep
...
</pre>

<p>This is the set of all targets required to build <code>//foo</code>.</p>

<p><a name="Tracing_the_Dependency_Chain_bet"></a></p>

<h2>Tracing the Dependency Chain between Two Packages</h2>

<p>The library <code>//third_party/zlib:zlibonly</code> isn't in the BUILD file for
<code>//foo</code>, but it is an indirect dependency. How can
we trace this dependency path?  There are two useful functions here:
<code>allpaths</code> and <code>somepath</code>. You may also want to exclude
tooling dependencies with <code>--notool_deps</code> if you care only about
what is included in the artifact you built, and not every possible job.

<p>To visualize the graph of all dependencies, pipe the bazel query output through
  the <code>dot</dot> command-line tool:</p>
<pre>
$ bazel query "allpaths(//foo, third_party/...)" --notool_deps --output graph | dot -Tpng > graph.png
</pre>

<p>When a dependency graph is big and complicated, it can be helpful start with a single path:</p>

<pre>
$ bazel query "somepath(//foo:foo, third_party/zlib:zlibonly)"
//foo:foo
//translations/tools:translator
//translations/base:base
//third_party/py/MySQL:MySQL
//third_party/py/MySQL:_MySQL.so
//third_party/mysql:mysql
//third_party/zlib:zlibonly
</pre>

<p>If you do not specify <code>--output graph</code> with <code>allpaths</code>,
you will get a flattened list of the dependency graph.</p>
<pre>
$ bazel query "allpaths(//foo, third_party/...)"
  ...many errors detected in BUILD files...
//foo:foo
//translations/tools:translator
//translations/tools:aggregator
//translations/base:base
//tools/pkg:pex
//tools/pkg:pex_phase_one
//tools/pkg:pex_lib
//third_party/python:python_lib
//translations/tools:messages
//third_party/py/xml:xml
//third_party/py/xml:utils/boolean.so
//third_party/py/xml:parsers/sgmlop.so
//third_party/py/xml:parsers/pyexpat.so
//third_party/py/MySQL:MySQL
//third_party/py/MySQL:_MySQL.so
//third_party/mysql:mysql
//third_party/openssl:openssl
//third_party/zlib:zlibonly
//third_party/zlib:zlibonly_v1_2_3
//third_party/python:headers
//third_party/openssl:crypto
</pre>

<p><a name="Aside_implicit_dependencies"></a></p>

<h3>Aside: implicit dependencies</h3>

<p>The BUILD file for <code>//foo</code> never references
<code>//translations/tools:aggregator</code>. So, where's the direct dependency?</p>

<p>Certain rules include implicit dependencies on additional libraries or tools.
For example, to build a <code>genproto</code> rule, you need first to build the Protocol
Compiler, so every <code>genproto</code> rule carries an implicit dependency on the
protocol compiler.  These dependencies are not mentioned in the build file,
but added in by the build tool.  The full set of implicit dependencies is
  currently undocumented. Using <code>--noimplicit_deps</code> allows you to filter out
  these deps from your query results.

<p><a name="Reverse_Dependencies"></a></p>

<h2>Reverse Dependencies</h2>

<p>You might want to know the set of targets that depends on some target.  e.g.,
if you're going to change some code, you might want to know what other code
you're about to break.  You can use <code>rdeps(u, x)</code> to find the reverse
dependencies of the targets in <code>x</code> within the transitive closure of <code>u</code>.</p>

Bazel's <a href="query.html#sky-query">Sky Query</a>
supports the <code>allrdeps</code> function which allows you to query rdeps in the entire
universe of the build.
<p><a name="Miscellaneous_Uses"></a></p>

<h2>Miscellaneous Uses</h2>

<p>You can use <code>bazel query</code> to analyze many dependency relationships.</p>

<p><a name="What_exists_"></a></p>

<h3>What exists ...</h3>

<p><a name="What_packages_exist_beneath_foo_"></a></p>

<h4>What packages exist beneath <code>foo</code>?</h4>

<pre>bazel query 'foo/...' --output package</pre>

<p><a name="What_rules_are_defined_in_the_gw"></a></p>

<h4>What rules are defined in the <code>foo</code> package?</h4>

<pre>bazel query 'kind(rule, foo:*)' --output label_kind</pre>

<p><a name="What_files_are_generated_by_rule"></a></p>

<h4>What files are generated by rules in the <code>foo</code> package?</h4>

<pre>bazel query 'kind("generated file", //foo:*)'</pre>

<p><a name="What_s_the_set_of_BUILD_files_ne"></a></p>

<h4>What's the set of BUILD files needed to build <code>//foo</code>?</h4>

<pre>bazel query 'buildfiles(deps(//foo))' | cut -f1 -d:</pre>

<p><a name="What_are_the_individual_tests_th"></a></p>

<h4>What are the individual tests that a <code>test_suite</code> expands to?</h4>

<pre>bazel query 'tests(//foo:smoke_tests)'</pre>

<p><a name="Which_of_those_are_C_tests_"></a></p>

<h4>Which of those are C++ tests?</h4>

<pre>bazel query 'kind(cc_.*, tests(//foo:smoke_tests))'</pre>

<p><a name="Which_of_those_are_small_Medium_"></a></p>

<h4>Which of those are small?  Medium?  Large?</h4>

<pre>
bazel query 'attr(size, small, tests(//foo:smoke_tests))'

bazel query 'attr(size, medium, tests(//foo:smoke_tests))'

bazel query 'attr(size, large, tests(//foo:smoke_tests))'
</pre>

<p><a name="What_are_the_tests_beneath_foo_t"></a></p>

<h4>What are the tests beneath <code>foo</code> that match a pattern?</h4>

<pre>bazel query 'filter("pa?t", kind(".*_test rule", //foo/...))'</pre>

<p>The pattern is a regex and is applied to the full name of the rule. It's similar to doing</p>

<pre>bazel query 'kind(".*_test rule", //foo/...)' | grep -E 'pa?t'</pre>

<p><a name="What_package_contains_file_java_"></a></p>

<h4>What package contains file <code>path/to/file/bar.java</code>?</h4>

<pre> bazel query path/to/file/bar.java --output=package</pre>

<p><a name="What_is_the_build_label_for_java"></a></p>

<h4>What is the build label for <code>path/to/file/bar.java?</code></h4>

<pre>bazel query path/to/file/bar.java</pre>

<p><a name="What_build_rule_contains_file_ja"></a></p>

<h4>What rule target(s) contain file <code>path/to/file/bar.java</code> as a source?</h4>

<pre>
fullname=$(bazel query path/to/file/bar.java)
bazel query "attr('srcs', $fullname, ${fullname//:*/}:*)"
</pre>

<p><a name="What_package_dependencies_exist_"></a></p>

<h3>What package dependencies exist ...</h3>

<p><a name="What_packages_does_foo_depend_on"></a></p>

<h4>What packages does <code>foo</code> depend on? (What do I need to check out to build <code>foo</code>)</h4>

<pre>bazel query 'buildfiles(deps(//foo:foo))' --output package</pre>

<p>Note, <code>buildfiles</code> is required in order to correctly obtain all files
referenced by <code>subinclude</code>; see the reference manual for details.</p>

<p><a name="What_packages_does_the_foo_"></a></p>

<h4>What packages does the <code>foo</code> tree depend on, excluding <code>foo/contrib</code>?</h4>

<pre>bazel query 'deps(foo/... except foo/contrib/...)' --output package</pre>

<p><a name="What_rule_dependencies_exist_"></a></p>

<h3>What rule dependencies exist ...</h3>

<p><a name="What_genproto_rules_does_bar_"></a></p>

<h4>What genproto rules does bar depend upon?</h4>

<pre>bazel query 'kind(genproto, deps(bar/...))'</pre>

<p><a name="Find_the_definition_of_some_JNI_"></a></p>

<h4>Find the definition of some JNI (C++) library that is transitively depended upon by a Java binary rule in the servlet tree.</h4>

<pre>bazel query 'some(kind(cc_.*library, deps(kind(java_binary, //java/com/example/frontend/...))))' --output location</pre>
<p><a name="_Now_find_the_definitions_of_all"></a></p>

<h5>...Now find the definitions of all the Java binaries that depend on them</h5>

<pre>bazel query 'let jbs = kind(java_binary, //java/com/example/frontend/...) in
  let cls = kind(cc_.*library, deps($jbs)) in
    $jbs intersect allpaths($jbs, $cls)'
</pre>

<p><a name="What_file_dependencies_exist_"></a></p>

<h3>What file dependencies exist ...</h3>

<p><a name="What_s_the_complete_set_of_Java_"></a></p>

<h4>What's the complete set of Java source files required to build foo?</h4>

<p>Source files:</p>

<pre>bazel query 'kind("source file", deps(//path/to/target/foo/...))' | grep java$</pre>

<p>Generated files:</p>

<pre>bazel query 'kind("generated file", deps(//path/to/target/foo/...))' | grep java$</pre>

<p><a name="What_is_the_complete_set_of_Java"></a></p>

<h4>What is the complete set of Java source files required to build QUX's tests?</h4>

<p>Source files:</p>

<pre>bazel query 'kind("source file", deps(kind(".*_test rule", javatests/com/example/qux/...)))' | grep java$</pre>

<p>Generated files:</p>

<pre>bazel query 'kind("generated file", deps(kind(".*_test rule", javatests/com/example/qux/...)))' | grep java$</pre>

<p><a name="What_differences_in_dependencies"></a></p>

<h3>What differences in dependencies between X and Y exist ...</h3>

<p><a name="What_targets_does_foo_depend_on_"></a></p>

<h4>What targets does <code>//foo</code> depend on that <code>//foo:foolib</code> does not?</h4>

<pre>bazel query 'deps(//foo) except deps(//foo:foolib)'</pre>

<p><a name="What_C_libraries_do_the_foo_test"></a></p>

<h4>What C++ libraries do the <code>foo</code> tests depend on that the <code>//foo</code> production binary does <em>not</em> depend on?</h4>

<pre>bazel query 'kind("cc_library", deps(kind(".*test rule", foo/...)) except deps(//foo))'</pre>

<p><a name="Why_does_this_dependency_exist_"></a></p>

<h3>Why does this dependency exist ...</h3>

<p><a name="Why_does_bar_depend_on_groups"></a></p>

<h4>Why does <code>bar</code> depend on <code>groups2</code>?</h4>

<pre>bazel query 'somepath(bar/...,groups2/...:*)'</pre>

<p>Once you have the results of this query, you will often find that a single
target stands out as being an unexpected or egregious and undesirable
dependency of <code>bar</code>.  The query can then be further refined to:</p>

<p><a name="Show_me_a_path_from_docker_updater"></a></p>

<h4>Show me a path from <code>docker/updater:updater_systest</code> (a <code>py_test</code>) to some <code>cc_library</code> that it depends upon:</h4>

<pre>bazel query 'let cc = kind(cc_library, deps(docker/updater:updater_systest)) in
  somepath(docker/updater:updater_systest, $cc)'</pre>

<p><a name="Why_does_library_photos_frontend"></a></p>

<h4>Why does library <code>//photos/frontend:lib</code> depend on two variants of the same library <code>//third_party/jpeglib</code> and <code>//third_party/jpeg</code>?</h4>

<p>This query boils down to: "show me the subgraph of <code>//photos/frontend:lib</code> that
depends on both libraries".  When shown in topological order, the last element
of the result is the most likely culprit.</p>

<pre>bazel query 'allpaths(//photos/frontend:lib, //third_party/jpeglib)
                intersect
               allpaths(//photos/frontend:lib, //third_party/jpeg)'
//photos/frontend:lib
//photos/frontend:lib_impl
//photos/frontend:lib_dispatcher
//photos/frontend:icons
//photos/frontend/modules/gadgets:gadget_icon
//photos/thumbnailer:thumbnail_lib
//third_party/jpeg/img:renderer
</pre>

<p><a name="What_depends_on_"></a></p>

<h3>What depends on  ...</h3>

<p><a name="What_rules_under_bar_depend_o"></a></p>

<h4>What rules under bar depend on Y?</h4>

<pre>bazel query 'bar/... intersect allpaths(bar/..., Y)'</pre>

<p>Note: <code>X intersect allpaths(X, Y)</code> is the general idiom for the query "which X
depend on Y?" If expression X is non-trivial, it may be convenient to bind a
name to it using <code>let</code> to avoid duplication.</p>

<p><a name="What_are_the_intra_package_direct_rdeps"></a></p>

<h4>What targets directly depend on T, in T's package?</h4>

<pre>bazel query 'same_pkg_direct_rdeps(T)'</pre>

<p><a name="How_do_I_break_a_dependency_"></a></p>

<h3>How do I break a dependency ...</h3>

<p><!-- TODO find a convincing value of X to plug in here -->
<a name="What_dependency_paths_do_I_have_"></a></p>

<h4>What dependency paths do I have to break to make <code>bar</code> no longer depend on X?</h4>

<p>To output the graph to a <code>png</code> file:</p>

<pre>bazel query 'allpaths(bar/...,X)' --output graph | dot -Tpng &gt; /tmp/dep.png</pre>

<p><a name="Misc_"></a></p>

<h3>Misc ...</h3>

<p><a name="How_many_sequential_steps_are_th"></a></p>

<h4>How many sequential steps are there in the <code>//foo-tests</code> build?</h4>

<p>Unfortunately, the query language can't currently give you the longest path
from x to y, but it can find the (or rather <em>a</em>) most distant node from the
starting point, or show you the <em>lengths</em> of the longest path from x to every
y that it depends on.  Use <code>maxrank</code>:</p>

<pre>bazel query 'deps(//foo-tests)' --output maxrank | tail -1
85 //third_party/zlib:zutil.c</pre>

<p>The result indicates that there exist paths of length 85 that must occur in
order in this build.</p>
