private static void addNamesFromStatistics( Set<String> names, VariableKind variableKind, @Nullable String propertyName, @Nullable PsiType type) { String[] allNames = JavaStatisticsManager.getAllVariableNamesUsed(variableKind, propertyName, type); int maxFrequency = 0; for (String name : allNames) { int count = JavaStatisticsManager.getVariableNameUseCount(name, variableKind, propertyName, type); maxFrequency = Math.max(maxFrequency, count); } int frequencyLimit = Math.max(5, maxFrequency / 2); for (String name : allNames) { if (names.contains(name)) { continue; } int count = JavaStatisticsManager.getVariableNameUseCount(name, variableKind, propertyName, type); if (LOG.isDebugEnabled()) { LOG.debug("new name:" + name + " count:" + count); LOG.debug("frequencyLimit:" + frequencyLimit); } if (count >= frequencyLimit) { names.add(name); } } if (propertyName != null && type != null) { addNamesFromStatistics(names, variableKind, propertyName, null); addNamesFromStatistics(names, variableKind, null, type); } }
private static void sortVariableNameSuggestions( String[] names, final VariableKind variableKind, @Nullable final String propertyName, @Nullable final PsiType type) { if (names.length <= 1) { return; } if (LOG.isDebugEnabled()) { LOG.debug("sorting names:" + variableKind); if (propertyName != null) { LOG.debug("propertyName:" + propertyName); } if (type != null) { LOG.debug("type:" + type); } for (String name : names) { int count = JavaStatisticsManager.getVariableNameUseCount(name, variableKind, propertyName, type); LOG.debug(name + " : " + count); } } Comparator<String> comparator = new Comparator<String>() { @Override public int compare(String s1, String s2) { int count1 = JavaStatisticsManager.getVariableNameUseCount(s1, variableKind, propertyName, type); int count2 = JavaStatisticsManager.getVariableNameUseCount(s2, variableKind, propertyName, type); return count2 - count1; } }; Arrays.sort(names, comparator); }