diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerBase.java index 3da67879b050..d4740fcba887 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerBase.java @@ -543,6 +543,10 @@ public abstract class EntryPointsManagerBase extends EntryPointsManager implemen return false; } + public List getWriteAnnotations() { + return List.copyOf(myWriteAnnotations); + } + public LinkedHashSet getPatterns() { return myPatterns; } diff --git a/java/java-impl/src/META-INF/JavaPlugin.xml b/java/java-impl/src/META-INF/JavaPlugin.xml index 90caf0ad7b1e..02b5fef85f17 100644 --- a/java/java-impl/src/META-INF/JavaPlugin.xml +++ b/java/java-impl/src/META-INF/JavaPlugin.xml @@ -433,6 +433,7 @@ + diff --git a/java/java-impl/src/com/intellij/codeInspection/deadCode/EntryPointsUsageCollector.java b/java/java-impl/src/com/intellij/codeInspection/deadCode/EntryPointsUsageCollector.java new file mode 100644 index 000000000000..1df878450062 --- /dev/null +++ b/java/java-impl/src/com/intellij/codeInspection/deadCode/EntryPointsUsageCollector.java @@ -0,0 +1,44 @@ +// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.codeInspection.deadCode; + +import com.intellij.codeInspection.ex.EntryPointsManagerBase; +import com.intellij.internal.statistic.beans.MetricEvent; +import com.intellij.internal.statistic.eventLog.EventLogGroup; +import com.intellij.internal.statistic.eventLog.events.EventFields; +import com.intellij.internal.statistic.eventLog.events.EventId1; +import com.intellij.internal.statistic.eventLog.events.EventId2; +import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; + +import java.util.LinkedHashSet; +import java.util.Set; + +public class EntryPointsUsageCollector extends ProjectUsagesCollector { + private static final EventLogGroup GROUP = new EventLogGroup("entry.points", 1); + private static final EventId2 ANNOTATIONS = + GROUP.registerEvent("annotations", + EventFields.Boolean("additional_used"), + EventFields.Boolean("write_used")); + private static final EventId1 PATTERNS = + GROUP.registerEvent("patterns", + EventFields.Boolean("used")); + + @Override + public EventLogGroup getGroup() { + return GROUP; + } + + @Override + protected @NotNull Set getMetrics(@NotNull Project project) { + EntryPointsManagerBase entryPointManager = EntryPointsManagerBase.getInstance(project); + boolean additionalAnnotationsUsed = !entryPointManager.getAdditionalAnnotations().isEmpty(); + boolean writeAnnotationsUsed = !entryPointManager.getWriteAnnotations().isEmpty(); + boolean patternsUsed = !entryPointManager.getPatterns().isEmpty(); + + Set result = new LinkedHashSet<>(); + result.add(ANNOTATIONS.metric(additionalAnnotationsUsed, writeAnnotationsUsed)); + result.add(PATTERNS.metric(patternsUsed)); + return result; + } +} diff --git a/platform/lang-impl/src/com/intellij/internal/statistic/tools/InspectionsUsagesCollector.java b/platform/lang-impl/src/com/intellij/internal/statistic/tools/InspectionsUsagesCollector.java index 4b607e3d75ed..3a9e5bdcfdd3 100644 --- a/platform/lang-impl/src/com/intellij/internal/statistic/tools/InspectionsUsagesCollector.java +++ b/platform/lang-impl/src/com/intellij/internal/statistic/tools/InspectionsUsagesCollector.java @@ -10,7 +10,9 @@ import com.intellij.internal.statistic.beans.MetricEvent; import com.intellij.internal.statistic.beans.MetricEventFactoryKt; import com.intellij.internal.statistic.eventLog.EventLogGroup; import com.intellij.internal.statistic.eventLog.FeatureUsageData; -import com.intellij.internal.statistic.eventLog.events.*; +import com.intellij.internal.statistic.eventLog.events.EventFields; +import com.intellij.internal.statistic.eventLog.events.EventId1; +import com.intellij.internal.statistic.eventLog.events.EventId3; import com.intellij.internal.statistic.eventLog.validator.ValidationResultType; import com.intellij.internal.statistic.eventLog.validator.rules.EventContext; import com.intellij.internal.statistic.eventLog.validator.rules.impl.CustomValidationRule; @@ -44,7 +46,10 @@ public class InspectionsUsagesCollector extends ProjectUsagesCollector { private static final String OPTION_NAME = "option_name"; private static final String INSPECTION_ID = "inspection_id"; - private static final EventLogGroup GROUP = new EventLogGroup("inspections", 5); + private static final EventLogGroup GROUP = new EventLogGroup("inspections", 6); + private static final EventId1 PROFILES = + GROUP.registerEvent("profiles", + EventFields.Int("amount")); private static final EventId3 PROFILE = GROUP.registerEvent("used.profile", EventFields.Boolean("project_level"), @@ -61,7 +66,9 @@ public class InspectionsUsagesCollector extends ProjectUsagesCollector { public Set getMetrics(@NotNull final Project project) { final Set result = new HashSet<>(); - final var profile = InspectionProjectProfileManager.getInstance(project).getCurrentProfile(); + final var profileManager = InspectionProjectProfileManager.getInstance(project); + result.add(PROFILES.metric(profileManager.getProfiles().size())); + final var profile = profileManager.getCurrentProfile(); result.add(create(profile)); final List tools = profile.getAllTools();