Only apply deps limit to analysis tests using transitions

Previously, a transitive-dependency count limit was applied to all analysis_test rules for simplicity, since there was not deemed a use case for an analysis test that was "large". However, relaxing this restriction to only apply to rules using transitions facilitates a build_test-like Starlark rule which verifies an existing real target analyzes correctly without executing any actions.

Progress toward #6237

RELNOTES: None.
PiperOrigin-RevId: 235580276
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Rule.java b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
index ae01bd2..c3245b4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Rule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
@@ -182,6 +182,14 @@
   }
 
   /**
+   * Returns true if this rule has at least one attribute with an analysis test transition. (A
+   * starlark-defined transition using analysis_test_transition()).
+   */
+  public boolean hasAnalysisTestTransition() {
+    return ruleClass.hasAnalysisTestTransition();
+  }
+
+  /**
    * Returns true iff there were errors while constructing this rule, such as
    * attributes with missing values or values of the wrong type.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index d61cc4a..7f96fc4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -645,6 +645,7 @@
     private boolean workspaceOnly = false;
     private boolean isExecutableSkylark = false;
     private boolean isAnalysisTest = false;
+    private boolean hasAnalysisTestTransition = false;
     private boolean isConfigMatcher = false;
     private boolean hasFunctionTransitionWhitelist = false;
     private boolean ignorePackageLicenses = false;
@@ -808,6 +809,7 @@
           workspaceOnly,
           isExecutableSkylark,
           isAnalysisTest,
+          hasAnalysisTestTransition,
           hasFunctionTransitionWhitelist,
           ignorePackageLicenses,
           implicitOutputsFunction,
@@ -1195,6 +1197,19 @@
     }
 
     /**
+     * This rule class has at least one attribute with an analysis test transition. (A
+     * starlark-defined transition using analysis_test_transition()).
+     */
+    public Builder setHasAnalysisTestTransition() {
+      this.hasAnalysisTestTransition = true;
+      return this;
+    }
+
+    public boolean hasAnalysisTestTransition() {
+      return this.hasAnalysisTestTransition;
+    }
+
+    /**
      * This rule class has the _whitelist_function_transition attribute.  Intended only for Skylark
      * rules.
      */
@@ -1390,6 +1405,7 @@
   private final boolean workspaceOnly;
   private final boolean isExecutableSkylark;
   private final boolean isAnalysisTest;
+  private final boolean hasAnalysisTestTransition;
   private final boolean isConfigMatcher;
   private final boolean hasFunctionTransitionWhitelist;
   private final boolean ignorePackageLicenses;
@@ -1519,6 +1535,7 @@
       boolean workspaceOnly,
       boolean isExecutableSkylark,
       boolean isAnalysisTest,
+      boolean hasAnalysisTestTransition,
       boolean hasFunctionTransitionWhitelist,
       boolean ignorePackageLicenses,
       ImplicitOutputsFunction implicitOutputsFunction,
@@ -1569,6 +1586,7 @@
     this.workspaceOnly = workspaceOnly;
     this.isExecutableSkylark = isExecutableSkylark;
     this.isAnalysisTest = isAnalysisTest;
+    this.hasAnalysisTestTransition = hasAnalysisTestTransition;
     this.hasFunctionTransitionWhitelist = hasFunctionTransitionWhitelist;
     this.ignorePackageLicenses = ignorePackageLicenses;
     this.configurationFragmentPolicy = configurationFragmentPolicy;
@@ -2424,6 +2442,14 @@
   }
 
   /**
+   * Returns true if this rule class has at least one attribute with an analysis test transition. (A
+   * starlark-defined transition using analysis_test_transition()).
+   */
+  public boolean hasAnalysisTestTransition() {
+    return hasAnalysisTestTransition;
+  }
+
+  /**
    * Returns true if this rule class has the _whitelist_function_transition attribute.
    */
   public boolean hasFunctionTransitionWhitelist() {