MCPcopy Create free account
hub / github.com/GraxCode/zelixkiller / areSimiliar

Method areSimiliar

src/me/lpk/CorrelationMapper.java:315–348  ·  view source on GitHub ↗

Checks if two classes are similiar. @param c1 @param c2 @return

(MappedClass c1, MappedClass c2)

Source from the content-addressed store, hash-verified

313 * @return
314 */
315 private static boolean areSimiliar(MappedClass c1, MappedClass c2) {
316 if (c1 == null || c2 == null) {
317 return false;
318 }
319 if (c1.hasParent() && !c2.hasParent()) {
320 return false;
321 }
322 if (c1.getNode() == null || c2.getNode() == null) {
323 return false;
324 }
325 if (c1.getInterfaces().size() != c2.getInterfaces().size()) {
326 return false;
327 }
328 // Must have a similar # of fields. Change is porportionate to class
329 // size.
330 double f1 = c1.getFields().size();
331 double f2 = c1.getFields().size();
332 double percDiffFields = (Math.abs(f1 - f2) / ((f1 + f2) / 2)) * 100;
333 double maxDiffLevelField = Math.min(25, 52 * (Math.pow(f2, -0.5)));
334 if (percDiffFields > maxDiffLevelField) {
335 return false;
336 }
337
338 // Must have a similar # of methods. Change is porportionate to class
339 // size.
340 double m1 = c1.getMethods().size();
341 double m2 = c2.getMethods().size();
342 double percDiffMethods = (Math.abs(m1 - m2) / ((m1 + m2) / 2)) * 100;
343 double maxDiffLevelMethod = Math.min(25, 52 * (Math.pow(m2, -0.5)));
344 if (percDiffMethods > maxDiffLevelMethod) {
345 return false;
346 }
347 return true;
348 }
349
350 /**
351 * Get's a member's class types from its description. Best for methods.

Callers 1

correlateMethod · 0.95

Calls 5

hasParentMethod · 0.80
getInterfacesMethod · 0.80
getFieldsMethod · 0.80
getMethodsMethod · 0.80
getNodeMethod · 0.45

Tested by

no test coverage detected