Esempio n. 1
0
  @SuppressWarnings("unused")
  public static void main(String[] args) throws UnknownExpressionException {
    String rootPath = args[0];
    File rootFile = new File(rootPath);

    Miner miner = new Miner();
    miner.mine(rootFile);

    for (Type type : miner.getMinedTypes()) {
      if (!type.toString().equals("HttpRoute")) {
        logger.debug("Skipping type: {}", type);
        continue;
      }

      logger.debug("Analyzing uses of: {}", type);

      Set<ClassDeclaration> decs = miner.getClassDecs(type);
      List<ConcreteUse> concreteUses = new LinkedList<>();

      for (ClassDeclaration dec : decs) {
        List<ConcreteUse> uses = ConcreteUse.extractUses(type, dec);
        /*
         * for(ConcreteUse c: uses){ if(c.getCFG().asList().size() >0)
         * concreteUses.add(c); }
         */
        concreteUses.addAll(uses);
      }

      logger.debug("Analyzing uses of: {} concrete uses", concreteUses.size());

      for (ConcreteUse use : concreteUses) {
        logger.debug("{}", use);
      }

      // if more than n, then cluster them
      List<List<ConcreteUse>> clusters = ConcreteUseClusterer.cluster(concreteUses);

      // abstract each cluster, then print it
      List<AbstractUse> abstractUses = new LinkedList<>();
      for (List<ConcreteUse> cluster : clusters) {
        AbstractUse use = AbstractUse.abstractUse(cluster);
        logger.debug("{}", use);
      }
      return;
    }
  }