Как настроить bazel для пометки отсутствующих «реальных» зависимостей? - PullRequest
0 голосов
/ 10 января 2020

Предположим, у меня есть файл example.cc, который выглядит как -

#include "target_one/one.h"
#include "target_two/two.h"
// Some code.

И файл BUILD выглядит так -

cc_binary(
    name = "example",
    srcs = "example.cc",
    deps = "//targets:target_three",
)

cc_binary(
    name = "target_three",
    srcs = "target_three.cc",
    deps = "//targets:target_one",
           "//targets:target_two", 
)

Как видите, example.cc удовлетворяет свои фактические зависимости от target_one и target_two косвенно через объявленную зависимость от target_three. Он строит просто отлично. Теперь, если кто-то рефакторирует target_three, чтобы удалить его зависимости на target_one или target_two, цель example сломается.

Есть ли в bazel опция, которая может помечать такие косвенные зависимости и заставлять пользователя всегда указывать ВСЕ их фактические / прямые зависимости?

Я прочитал документацию bazel по Фактическая и объявленная зависимость , но единственный совет, который я нашел должен был быть небрежным при добавлении зависимостей.

Осматривая net, я обнаружил, что у людей возникла противоположная проблема - ошибка bazel из-за того, что пользователи не указали зависимости для системных заголовков, и они не хотят, чтобы они выдавали ошибку .

...