IJPL-797 intellij.platform.duplicates.analysis review internal API

GitOrigin-RevId: c43f630d7ec2b4ba45aebb72269710c6a8950a80
This commit is contained in:
Alexandr Suhinin
2024-06-10 14:43:13 +03:00
committed by intellij-monorepo-bot
parent bbeb4ab06d
commit 993ce19e72
16 changed files with 33 additions and 130 deletions

View File

@@ -16,18 +16,6 @@ a:com.intellij.dupLocator.AbstractMatchingVisitor
- matchSons(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement):Z
- f:matchSonsInAnyOrder(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement):Z
- matchSonsOptionally(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement):Z
f:com.intellij.dupLocator.DefaultDuplocatorState
- com.intellij.dupLocator.ExternalizableDuplocatorState
- DISCARD_COST:I
- DISTINGUISH_FUNCTIONS:Z
- DISTINGUISH_LITERALS:Z
- DISTINGUISH_VARIABLES:Z
- LOWER_BOUND:I
- <init>():V
- distinguishLiterals():Z
- distinguishRole(com.intellij.dupLocator.PsiElementRole):Z
- getDiscardCost():I
- getLowerBound():I
com.intellij.dupLocator.DupInfo
- a:getComment(I):java.lang.String
- a:getFileCount(I):I
@@ -38,11 +26,7 @@ com.intellij.dupLocator.DupInfo
- a:getPatterns():I
- a:getTitle(I):java.lang.String
- a:getUsageOccurences(I):com.intellij.usageView.UsageInfo[]
f:com.intellij.dupLocator.DupLocatorBundle
- s:message(java.lang.String,java.lang.Object[]):java.lang.String
- s:messagePointer(java.lang.String,java.lang.Object[]):java.util.function.Supplier
a:com.intellij.dupLocator.DuplicatesProfile
- sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName
- <init>():V
- acceptsContentForIndexing(com.intellij.util.indexing.FileContent):Z
- a:createVisitor(com.intellij.dupLocator.treeHash.FragmentsCollector):com.intellij.dupLocator.DuplocateVisitor
@@ -54,6 +38,7 @@ a:com.intellij.dupLocator.DuplicatesProfile
- getComment(com.intellij.dupLocator.DupInfo,I):java.lang.String
- a:getDuplocatorState(com.intellij.lang.Language):com.intellij.dupLocator.DuplocatorState
- getLanguage(com.intellij.psi.PsiElement):com.intellij.lang.Language
- s:getProfile(java.lang.Class):com.intellij.dupLocator.DuplicatesProfile
- getRole(com.intellij.psi.PsiElement):com.intellij.dupLocator.PsiElementRole
- isMyDuplicate(com.intellij.dupLocator.DupInfo,I):Z
- a:isMyLanguage(com.intellij.lang.Language):Z
@@ -91,14 +76,6 @@ com.intellij.dupLocator.LightDuplicateProfile
- a:process(com.intellij.lang.LighterAST,com.intellij.dupLocator.LightDuplicateProfile$Callback):V
com.intellij.dupLocator.LightDuplicateProfile$Callback
- a:process(I,I,com.intellij.lang.LighterAST,com.intellij.lang.LighterASTNode[]):V
f:com.intellij.dupLocator.MultilanguageDuplocatorSettings
- com.intellij.openapi.components.PersistentStateComponent
- <init>():V
- s:getInstance():com.intellij.dupLocator.MultilanguageDuplocatorSettings
- getState():org.jdom.Element
- getState(com.intellij.lang.Language):com.intellij.dupLocator.DefaultDuplocatorState
- loadState(org.jdom.Element):V
- registerState(com.intellij.lang.Language,com.intellij.dupLocator.DefaultDuplocatorState):V
a:com.intellij.dupLocator.NodeSpecificHasher
- com.intellij.dupLocator.DuplocateVisitor
- <init>():V
@@ -115,16 +92,8 @@ e:com.intellij.dupLocator.PsiElementRole
- sf:VARIABLE_NAME:com.intellij.dupLocator.PsiElementRole
- s:valueOf(java.lang.String):com.intellij.dupLocator.PsiElementRole
- s:values():com.intellij.dupLocator.PsiElementRole[]
f:com.intellij.dupLocator.TreeComparator
- s:areEqual(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement,com.intellij.dupLocator.NodeSpecificHasher,I):Z
com.intellij.dupLocator.TreeHasher
- a:hash(com.intellij.psi.PsiElement,com.intellij.dupLocator.NodeSpecificHasher):V
com.intellij.dupLocator._DupInfo
- a:getDensity(java.lang.Integer):I
- a:getHeight(java.lang.Integer):I
- a:getOccurencies(java.lang.Integer):java.util.HashSet
- a:getPatterns():java.util.TreeSet
- a:toString(java.lang.Integer):java.lang.String
com.intellij.dupLocator.equivalence.EquivalenceDescriptor
- a:getCodeBlocks():java.util.List
- a:getConstants():java.util.List
@@ -151,40 +120,12 @@ c:com.intellij.dupLocator.equivalence.EquivalenceDescriptorBuilder
- optionallyInPattern(com.intellij.psi.PsiElement):com.intellij.dupLocator.equivalence.EquivalenceDescriptorBuilder
- optionallyInPattern(com.intellij.psi.PsiElement[]):com.intellij.dupLocator.equivalence.EquivalenceDescriptorBuilder
a:com.intellij.dupLocator.equivalence.EquivalenceDescriptorProvider
- sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName
- s:ourUseDefaultEquivalence:Z
- <init>():V
- a:buildDescriptor(com.intellij.psi.PsiElement):com.intellij.dupLocator.equivalence.EquivalenceDescriptor
- getIgnoredTokens():com.intellij.psi.tree.TokenSet
- s:getInstance(com.intellij.psi.PsiElement):com.intellij.dupLocator.equivalence.EquivalenceDescriptorProvider
- a:isMyContext(com.intellij.psi.PsiElement):Z
c:com.intellij.dupLocator.equivalence.MultiChildDescriptor
- <init>(com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType,com.intellij.psi.PsiElement[]):V
- getElements():com.intellij.psi.PsiElement[]
- getType():com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType
e:com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType
- java.lang.Enum
- sf:DEFAULT:com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType
- sf:IN_ANY_ORDER:com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType
- sf:OPTIONALLY:com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType
- sf:OPTIONALLY_IN_PATTERN:com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType
- s:valueOf(java.lang.String):com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType
- s:values():com.intellij.dupLocator.equivalence.MultiChildDescriptor$MyType[]
c:com.intellij.dupLocator.equivalence.SingleChildDescriptor
- <init>(com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType,com.intellij.psi.PsiElement):V
- getElement():com.intellij.psi.PsiElement
- getType():com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
e:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- java.lang.Enum
- sf:CHILDREN:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- sf:CHILDREN_IN_ANY_ORDER:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- sf:CHILDREN_OPTIONALLY:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- sf:CHILDREN_OPTIONALLY_IN_PATTERN:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- sf:DEFAULT:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- sf:OPTIONALLY:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- sf:OPTIONALLY_IN_PATTERN:com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- s:valueOf(java.lang.String):com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType
- s:values():com.intellij.dupLocator.equivalence.SingleChildDescriptor$MyType[]
f:com.intellij.dupLocator.iterators.ArrayBackedNodeIterator
- com.intellij.dupLocator.iterators.NodeIterator
- <init>(com.intellij.psi.PsiElement[]):V
@@ -244,8 +185,8 @@ a:com.intellij.dupLocator.treeHash.AbstractTreeHasher
- pf:myCallBack:com.intellij.dupLocator.treeHash.FragmentsCollector
- pf:myForIndexing:Z
- <init>(com.intellij.dupLocator.treeHash.FragmentsCollector,Z):V
- p:buildFragment(com.intellij.dupLocator.NodeSpecificHasher,com.intellij.psi.PsiElement,I):com.intellij.dupLocator.treeHash.TreePsiFragment
- p:buildFragment(com.intellij.dupLocator.NodeSpecificHasher,java.util.List,I,I):com.intellij.dupLocator.treeHash.TreePsiFragment
- p:buildFragment(com.intellij.dupLocator.NodeSpecificHasher,com.intellij.psi.PsiElement,I):com.intellij.dupLocator.util.PsiFragment
- p:buildFragment(com.intellij.dupLocator.NodeSpecificHasher,java.util.List,I,I):com.intellij.dupLocator.util.PsiFragment
- p:computeElementHash(com.intellij.psi.PsiElement,com.intellij.dupLocator.util.PsiFragment,com.intellij.dupLocator.NodeSpecificHasher):com.intellij.dupLocator.treeHash.TreeHashResult
- p:getCost(com.intellij.psi.PsiElement):I
- pa:getDiscardCost(com.intellij.psi.PsiElement):I
@@ -257,11 +198,6 @@ a:com.intellij.dupLocator.treeHash.AbstractTreeHasher
- shouldAnonymize(com.intellij.psi.PsiElement,com.intellij.dupLocator.NodeSpecificHasher):Z
- s:vector(I[]):I
- s:vector(I[],I):I
f:com.intellij.dupLocator.treeHash.DuplicatesMatchingVisitor
- com.intellij.dupLocator.AbstractMatchingVisitor
- <init>(com.intellij.dupLocator.treeHash.NodeSpecificHasherBase,com.intellij.dupLocator.util.NodeFilter,I):V
- match(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement):Z
- matchSequentially(com.intellij.dupLocator.iterators.NodeIterator,com.intellij.dupLocator.iterators.NodeIterator):Z
a:com.intellij.dupLocator.treeHash.DuplicatesProfileBase
- com.intellij.dupLocator.DuplicatesProfile
- <init>():V
@@ -282,26 +218,6 @@ c:com.intellij.dupLocator.treeHash.DuplocatorHashCallback
- s:writeDuplicates(java.nio.file.Path,com.intellij.openapi.project.Project,com.intellij.dupLocator.DupInfo):V
com.intellij.dupLocator.treeHash.FragmentsCollector
- a:add(I,I,com.intellij.dupLocator.util.PsiFragment):V
c:com.intellij.dupLocator.treeHash.GroupNodeDescription
- <init>(I,java.lang.String,java.lang.String):V
- getComment():java.lang.String
- getFilesCount():I
- getTitle():java.lang.String
c:com.intellij.dupLocator.treeHash.NodeSpecificHasherBase
- com.intellij.dupLocator.NodeSpecificHasher
- pf:myForIndexing:Z
- <init>(com.intellij.dupLocator.DuplocatorSettings,com.intellij.dupLocator.treeHash.FragmentsCollector,com.intellij.dupLocator.treeHash.DuplicatesProfileBase):V
- <init>(com.intellij.dupLocator.DuplocatorSettings,com.intellij.dupLocator.treeHash.FragmentsCollector,com.intellij.dupLocator.treeHash.DuplicatesProfileBase,Z):V
- areNodesEqual(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement):Z
- areTreesEqual(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement,I):Z
- checkDeep(com.intellij.psi.PsiElement,com.intellij.psi.PsiElement):Z
- getDuplicatesProfile():com.intellij.dupLocator.treeHash.DuplicatesProfileBase
- getNodeChildren(com.intellij.psi.PsiElement):java.util.List
- getNodeCost(com.intellij.psi.PsiElement):I
- getNodeFilter():com.intellij.dupLocator.util.NodeFilter
- getNodeHash(com.intellij.psi.PsiElement):I
- hashingFinished():V
- visitNode(com.intellij.psi.PsiElement):V
c:com.intellij.dupLocator.treeHash.TreeHashResult
- <init>(I,I,com.intellij.dupLocator.util.PsiFragment):V
- getCost():I
@@ -310,11 +226,6 @@ c:com.intellij.dupLocator.treeHash.TreeHashResult
f:com.intellij.dupLocator.treeHash.TreeHashingUtils
- <init>():V
- s:hashCodeBlockForIndexing(com.intellij.dupLocator.treeHash.AbstractTreeHasher,com.intellij.dupLocator.treeHash.FragmentsCollector,java.util.List,com.intellij.dupLocator.util.PsiFragment,com.intellij.dupLocator.NodeSpecificHasher):com.intellij.dupLocator.treeHash.TreeHashResult
c:com.intellij.dupLocator.treeHash.TreePsiFragment
- com.intellij.dupLocator.util.PsiFragment
- <init>(com.intellij.dupLocator.NodeSpecificHasher,com.intellij.psi.PsiElement,I):V
- <init>(com.intellij.dupLocator.NodeSpecificHasher,java.util.List,I,I):V
- isEqual(com.intellij.psi.PsiElement[],I):Z
com.intellij.dupLocator.treeView.NodeMatcher
- a:match(com.intellij.psi.PsiElement):Z
f:com.intellij.dupLocator.util.DuplocatorUtil

View File

@@ -15,12 +15,12 @@
*/
package com.intellij.dupLocator;
import com.intellij.dupLocator.util.NodeFilter;
import com.intellij.psi.PsiElement;
import com.intellij.dupLocator.iterators.ArrayBackedNodeIterator;
import com.intellij.dupLocator.iterators.FilteringNodeIterator;
import com.intellij.dupLocator.iterators.NodeIterator;
import com.intellij.dupLocator.iterators.SiblingNodeIterator;
import com.intellij.dupLocator.util.NodeFilter;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

View File

@@ -1,10 +1,10 @@
package com.intellij.dupLocator;
import com.intellij.openapi.diagnostic.Logger;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@ApiStatus.Internal
public final class DefaultDuplocatorState implements ExternalizableDuplocatorState {
private static final Logger LOG = Logger.getInstance(DefaultDuplocatorState.class);
public boolean DISTINGUISH_VARIABLES = false;
public boolean DISTINGUISH_FUNCTIONS = true;

View File

@@ -1,13 +1,11 @@
package com.intellij.dupLocator;
import com.intellij.DynamicBundle;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.PropertyKey;
import org.jetbrains.annotations.*;
import java.util.function.Supplier;
@ApiStatus.Internal
public final class DupLocatorBundle {
private static final @NonNls String BUNDLE = "messages.DupLocatorBundle";

View File

@@ -29,7 +29,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
public abstract class DuplicatesProfile {
public static final ExtensionPointName<DuplicatesProfile> EP_NAME = ExtensionPointName.create("com.intellij.duplicates.profile");
private static final ExtensionPointName<DuplicatesProfile> EP_NAME = ExtensionPointName.create("com.intellij.duplicates.profile");
@NotNull
public abstract DuplocateVisitor createVisitor(@NotNull FragmentsCollector collector);
@@ -109,6 +109,10 @@ public abstract class DuplicatesProfile {
return null;
}
public static <T extends DuplicatesProfile> DuplicatesProfile getProfile(Class<T> profileClass) {
return EP_NAME.findExtensionOrFail(profileClass);
}
@NotNull
public Language getLanguage(@NotNull PsiElement element) {
return element.getLanguage();

View File

@@ -10,11 +10,13 @@ import com.intellij.openapi.components.Storage;
import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters;
import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import java.util.Map;
import java.util.TreeMap;
@ApiStatus.Internal
@State(
name = "MultiLanguageDuplocatorSettings",
storages = @Storage("duplocatorSettings.xml"),

View File

@@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.List;
public final class TreeComparator {
final class TreeComparator {
private TreeComparator() {
}

View File

@@ -1,18 +0,0 @@
package com.intellij.dupLocator;
import com.intellij.psi.PsiElement;
import java.util.HashSet;
import java.util.TreeSet;
public interface _DupInfo {
TreeSet<Integer> getPatterns();
int getHeight(Integer pattern);
int getDensity(Integer pattern);
HashSet<PsiElement> getOccurencies(Integer pattern);
String toString(Integer pattern);
}

View File

@@ -8,7 +8,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
public abstract class EquivalenceDescriptorProvider {
public static final ExtensionPointName<EquivalenceDescriptorProvider> EP_NAME = ExtensionPointName.create("com.intellij.equivalenceDescriptorProvider");
private static final ExtensionPointName<EquivalenceDescriptorProvider> EP_NAME = ExtensionPointName.create("com.intellij.equivalenceDescriptorProvider");
// for using in tests only !!!
@SuppressWarnings("StaticNonFinalField")

View File

@@ -1,8 +1,10 @@
package com.intellij.dupLocator.equivalence;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@ApiStatus.Internal
public class MultiChildDescriptor {
private final MyType myType;
private final PsiElement[] myElements;

View File

@@ -1,9 +1,11 @@
package com.intellij.dupLocator.equivalence;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ApiStatus.Internal
public class SingleChildDescriptor {
private final MyType myType;
private final PsiElement myElement;

View File

@@ -77,7 +77,7 @@ public abstract class AbstractTreeHasher implements TreeHasher {
return new TreeHashResult(h, c, fragment);
}
protected TreePsiFragment buildFragment(NodeSpecificHasher hasher, PsiElement root,int cost) {
protected PsiFragment buildFragment(NodeSpecificHasher hasher, PsiElement root,int cost) {
if (myForIndexing) {
return new TreePsiFragment(hasher, root, cost) {
@Override
@@ -94,7 +94,7 @@ public abstract class AbstractTreeHasher implements TreeHasher {
return new TreePsiFragment(hasher, root, cost);
}
protected TreePsiFragment buildFragment(NodeSpecificHasher hasher, List<? extends PsiElement> elements, int from, int to) {
protected PsiFragment buildFragment(NodeSpecificHasher hasher, List<? extends PsiElement> elements, int from, int to) {
if (myForIndexing) {
return new TreePsiFragment(hasher, elements, from, to) {
@Override

View File

@@ -21,14 +21,14 @@ import org.jetbrains.annotations.NotNull;
import java.util.*;
public final class DuplicatesMatchingVisitor extends AbstractMatchingVisitor {
final class DuplicatesMatchingVisitor extends AbstractMatchingVisitor {
private final NodeSpecificHasherBase myNodeSpecificHasher;
private final NodeFilter myNodeFilter;
private final int myDiscardCost;
private final TreeHasherBase myTreeHasher;
private final Map<PsiElement, TreeHashResult> myPsiElement2HashAndCost = new HashMap<>();
public DuplicatesMatchingVisitor(NodeSpecificHasherBase nodeSpecificHasher,
DuplicatesMatchingVisitor(NodeSpecificHasherBase nodeSpecificHasher,
@NotNull NodeFilter nodeFilter,
int discardCost) {
myNodeSpecificHasher = nodeSpecificHasher;

View File

@@ -2,13 +2,13 @@ package com.intellij.dupLocator.treeHash;
import org.jetbrains.annotations.Nls;
public class GroupNodeDescription {
class GroupNodeDescription {
private final int myFilesCount;
private final @Nls String myTitle;
private final @Nls String myComment;
public GroupNodeDescription(final int filesCount, final @Nls String title, final @Nls String comment) {
GroupNodeDescription(final int filesCount, final @Nls String title, final @Nls String comment) {
myFilesCount = filesCount;
myTitle = title;
myComment = comment;

View File

@@ -15,11 +15,13 @@ import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.impl.source.tree.LeafElement;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@ApiStatus.Internal
public class NodeSpecificHasherBase extends NodeSpecificHasher {
private final TreeHasherBase myTreeHasher;
private final DuplocatorSettings mySettings;

View File

@@ -6,15 +6,15 @@ import com.intellij.psi.PsiElement;
import java.util.List;
public class TreePsiFragment extends PsiFragment {
class TreePsiFragment extends PsiFragment {
private final NodeSpecificHasher myHasher;
public TreePsiFragment(final NodeSpecificHasher hasher, final PsiElement root, final int cost) {
TreePsiFragment(final NodeSpecificHasher hasher, final PsiElement root, final int cost) {
super(root, cost);
myHasher = hasher;
}
public TreePsiFragment(final NodeSpecificHasher hasher, final List<? extends PsiElement> element, final int from, final int to) {
TreePsiFragment(final NodeSpecificHasher hasher, final List<? extends PsiElement> element, final int from, final int to) {
super(element, from, to);
myHasher = hasher;
}