public ImmutableList analyze()

in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/analyzers/BundleAnalyzer.java [60:91]


  public ImmutableList<Suggestion> analyze(File artifactFile) {
    ImmutableList.Builder<Suggestion> resultBuilder = ImmutableList.<Suggestion>builder();
    try (ZipFile zipFile = new ZipFile(artifactFile)) {
      AppBundle appBundle = AppBundle.buildFromZip(zipFile);
      ImmutableMap<BundleModuleName, BundleContext> contextPerModule =
          appBundle.getModules().entrySet().stream()
              .collect(
                  toImmutableMap(
                      entry -> entry.getKey(), entry -> createContext(entry.getValue())));

      // Process suggesters operating on the entire bundle.
      BundleContext baseContext = contextPerModule.get(BundleModuleName.BASE_MODULE_NAME);
      bundleSuggesters.forEach(
          suggester ->
              resultBuilder.addAll(suggester.processBundle(baseContext, appBundle, zipFile)));

      // Process suggesters operating on the individual bundle files.
      Enumeration<? extends ZipEntry> entries = zipFile.entries();
      while (entries.hasMoreElements()) {
        ZipEntry entry = entries.nextElement();
        BundleContext context = findContext(contextPerModule, entry);
        for (BundleEntrySuggester suggester : bundleEntrySuggesters) {
          ZipFileData zipFileData = new ZipFileData(zipFile, entry);
          resultBuilder.addAll(suggester.processBundleZipEntry(context, zipFileData));
        }
      }
    } catch (IOException e) {
      throw new UncheckedIOException(e);
    }

    return resultBuilder.build();
  }