public List check()

in core/src/main/java/com/spotify/missinglink/ConflictChecker.java [119:149]


  public List<Conflict> check(
      Artifact projectArtifact, List<Artifact> artifactsToCheck, List<Artifact> allArtifacts) {

    final CheckerStateBuilder stateBuilder = new CheckerStateBuilder();

    createCanonicalClassMapping(stateBuilder, allArtifacts);
    CheckerState state = stateBuilder.build();

    // brute-force reachability analysis
    Set<TypeDescriptor> reachableClasses =
        reachableFrom(projectArtifact.classes().values(), state.knownClasses());

    final List<Conflict> conflicts = new ArrayList<>();

    // Then go through everything in the classpath to make sure all the method calls / field
    // references
    // are satisfied.
    for (Artifact artifact : artifactsToCheck) {
      for (DeclaredClass clazz : artifact.classes().values()) {
        if (!reachableClasses.contains(clazz.className())) {
          continue;
        }

        for (DeclaredMethod method : clazz.methods().values()) {
          conflicts.addAll(checkForBrokenMethodCalls(state, artifact, clazz, method));
          conflicts.addAll(checkForBrokenFieldAccess(state, artifact, clazz, method));
        }
      }
    }
    return conflicts;
  }