Ejemplo n.º 1
0
  @Override
  public void run() {
    while (true) {
      final long currentIndex = index.getAndIncrement();
      if (currentIndex >= length) {
        break;
      }

      System.out.println(
          "\t[" + currentIndex + "/" + length + "] judging " + currentIndex + " elements");

      final ClonePair currentClonePair = clonePairs.get(currentIndex);
      final InstantCodeFragmentInfo fragment1 = currentClonePair.getFragment1();

      if (clonePairsCategorizedByPath.containsKey(fragment1.getFilePath())) {
        final Set<ClonePair> tmpPairs = clonePairsCategorizedByPath.get(fragment1.getFilePath());

        for (final ClonePair tmpPair : tmpPairs) {
          if (tmpPair.equals(currentClonePair)) {
            continue;
          }
          if (tmpPair.subsume(currentClonePair)) {
            subsumedClonePairs.add(currentIndex);
            break;
          }
        }
      }
    }
  }
Ejemplo n.º 2
0
  private ConcurrentMap<Long, Set<InstantCodeFragmentInfo>> categorizeFragments(
      Collection<InstantCodeFragmentInfo> fragments) {
    final ConcurrentMap<Long, Set<InstantCodeFragmentInfo>> result =
        new ConcurrentHashMap<Long, Set<InstantCodeFragmentInfo>>();

    final long length = fragments.size();
    long count = 0;

    for (final InstantCodeFragmentInfo fragment : fragments) {
      if (result.containsKey(fragment.getHash())) {
        result.get(fragment.getHash()).add(fragment);
      } else {
        final Set<InstantCodeFragmentInfo> newSet = new HashSet<InstantCodeFragmentInfo>();
        newSet.add(fragment);
        result.put(fragment.getHash(), newSet);
      }
      if (++count % 10000 == 0) {
        System.out.println(
            "\t[" + count + "/" + length + "] 1st step processed " + count + " elements");
      }
    }

    System.out.println("\t[" + count + "/" + length + "] 1st step processed all elements");

    return result;
  }