---
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_targets_are_generated_by_macro">What targets are generated by starlark macro
<code>foo</code>?</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</code> 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_foo"></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_targets_are_generated_by_macro"></a></p>

<h4>What targets are generated by starlark macro <code>foo</code>?</h4>

<pre>bazel query 'attr(generator_function, foo, //path/to/search/...)'</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>
