Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand All @@ -22,24 +23,24 @@ public class ConnectionStringCheck extends LocalInspectionTool {

@Override
public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new ConnectionStringCheckVisitor(holder, RuleConfigLoader.getInstance());
return new ConnectionStringCheckVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
}

static class ConnectionStringCheckVisitor extends JavaElementVisitor {
private final ProblemsHolder holder;
private static RuleConfig RULE_CONFIG;
private static boolean SKIP_WHOLE_RULE;

ConnectionStringCheckVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
ConnectionStringCheckVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "ConnectionStringCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand All @@ -36,7 +37,7 @@ public class DisableAutoCompleteCheck extends LocalInspectionTool {
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new DisableAutoCompleteVisitor(holder, RuleConfigLoader.getInstance());
return new DisableAutoCompleteVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
}

/**
Expand All @@ -50,17 +51,16 @@ static class DisableAutoCompleteVisitor extends JavaElementVisitor {
private static boolean SKIP_WHOLE_RULE;
private final ProblemsHolder holder;


DisableAutoCompleteVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
DisableAutoCompleteVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "DisableAutoCompleteCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand All @@ -31,7 +32,7 @@ public class DynamicClientCreationCheck extends LocalInspectionTool {
@NotNull
@Override
public JavaElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new DynamicClientCreationVisitor(holder, RuleConfigLoader.getInstance());
return new DynamicClientCreationVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not quite sure, do you know if this could run prior to ProjectActivity? If that's the case, there might be a NPE, given that INSTANCE might not have initialized yet.

Copy link
Contributor Author

@samvaity samvaity Feb 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did do a runIde for testing this strategy. It does seem to be working as expected.
Also, from the documentation here, <postStartupActivity/> is executed after project initialization but before the first UI interaction. So, it should be safe relying on the project being fully initialized can safely execute logic.

}

static class DynamicClientCreationVisitor extends JavaElementVisitor {
Expand All @@ -40,16 +41,16 @@ static class DynamicClientCreationVisitor extends JavaElementVisitor {
private static RuleConfig RULE_CONFIG;
private static boolean SKIP_WHOLE_RULE;

public DynamicClientCreationVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
public DynamicClientCreationVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "DynamicClientCreationCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand All @@ -24,7 +25,7 @@ public class EventHubConsumerAsyncClientCheck extends LocalInspectionTool {
@Override
public JavaElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new EventHubConsumerAsyncClientCheck.EventHubConsumerAsyncClientVisitor(holder,
RuleConfigLoader.getInstance());
RuleConfigLoader.getInstance().getRuleConfigs());
}

/**
Expand All @@ -41,18 +42,18 @@ static class EventHubConsumerAsyncClientVisitor extends JavaElementVisitor {
* Constructor to initialize the visitor with the holder and isOnTheFly flag.
*
* @param holder Holder for the problems found by the inspection
* @param ruleConfigLoader RuleConfigLoader object to load the rule configuration
* @param ruleConfigs Rule configurations for the inspection
*/
public EventHubConsumerAsyncClientVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
public EventHubConsumerAsyncClientVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "EventHubConsumerAsyncClientCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand All @@ -22,24 +23,24 @@ public class GetCompletionsCheck extends LocalInspectionTool {

@Override
public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new GetCompletionsCheck.GetCompletionsVisitor(holder, RuleConfigLoader.getInstance());
return new GetCompletionsCheck.GetCompletionsVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
}

static class GetCompletionsVisitor extends JavaElementVisitor {
private final ProblemsHolder holder;
private static RuleConfig RULE_CONFIG;
private static boolean SKIP_WHOLE_RULE;

GetCompletionsVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
GetCompletionsVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "GetCompletionsCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand Down Expand Up @@ -39,7 +40,7 @@ public class GetSyncPollerOnPollerFluxCheck extends LocalInspectionTool {
@NotNull
@Override
public JavaElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new GetSyncPollerOnPollerFluxVisitor(holder, RuleConfigLoader.getInstance());
return new GetSyncPollerOnPollerFluxVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
}

/**
Expand All @@ -56,18 +57,18 @@ class GetSyncPollerOnPollerFluxVisitor extends JavaElementVisitor {
* Constructor to initialize the visitor with the holder and isOnTheFly flag.
*
* @param holder Holder for the problems found by the inspection
* @param ruleConfigLoader RuleConfigLoader object to load the rule configuration
* @param ruleConfigs Rule configurations for the inspection
*/
public GetSyncPollerOnPollerFluxVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
public GetSyncPollerOnPollerFluxVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "GetSyncPollerOnPollerFluxCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import org.jetbrains.annotations.NotNull;
Expand All @@ -37,7 +38,7 @@ public class HardcodedAPIKeysAndTokensCheck extends LocalInspectionTool {
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new APIKeysAndTokensVisitor(holder, RuleConfigLoader.getInstance());
return new APIKeysAndTokensVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
}

/**
Expand All @@ -49,16 +50,16 @@ static class APIKeysAndTokensVisitor extends JavaElementVisitor {
private static RuleConfig RULE_CONFIG;
private static boolean SKIP_WHOLE_RULE;

APIKeysAndTokensVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
APIKeysAndTokensVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "HardcodedAPIKeysAndTokensCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.HelperUtils;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand All @@ -18,7 +19,7 @@ public class ServiceBusReceiverAsyncClientCheck extends LocalInspectionTool {
@Override
public JavaElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new ServiceBusReceiverAsyncClientCheck.ServiceBusReceiverAsyncClientCheckVisitor(holder,
RuleConfigLoader.getInstance());
RuleConfigLoader.getInstance().getRuleConfigs());
}


Expand All @@ -32,18 +33,18 @@ static class ServiceBusReceiverAsyncClientCheckVisitor extends JavaElementVisito
* Constructor to initialize the visitor with the holder and isOnTheFly flag.
*
* @param holder Holder for the problems found by the inspection
* @param ruleConfigLoader RuleConfigLoader object to load the rule configuration
* @param ruleConfigs Rule configurations for the inspection
*/
public ServiceBusReceiverAsyncClientCheckVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
public ServiceBusReceiverAsyncClientCheckVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "ServiceBusReceiverAsyncClientCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.models.RuleConfig;
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand Down Expand Up @@ -52,7 +53,7 @@ public class SingleOperationInLoopTextAnalyticsCheck extends LocalInspectionTool
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new SingleOperationInLoopVisitor(holder, RuleConfigLoader.getInstance());
return new SingleOperationInLoopVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
}

/**
Expand All @@ -66,16 +67,16 @@ static class SingleOperationInLoopVisitor extends JavaElementVisitor {
private static RuleConfig RULE_CONFIG;
private static boolean SKIP_WHOLE_RULE;

public SingleOperationInLoopVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
public SingleOperationInLoopVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "SingleOperationInLoopTextAnalyticsCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.microsoft.azure.toolkit.intellij.java.sdk.utils.RuleConfigLoader;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

/**
Expand All @@ -31,7 +32,7 @@ public class StorageUploadWithoutLengthCheck extends LocalInspectionTool {
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new StorageUploadVisitor(holder, RuleConfigLoader.getInstance());
return new StorageUploadVisitor(holder, RuleConfigLoader.getInstance().getRuleConfigs());
}

/**
Expand All @@ -44,16 +45,16 @@ static class StorageUploadVisitor extends JavaRecursiveElementWalkingVisitor {
private static boolean SKIP_WHOLE_RULE;


StorageUploadVisitor(ProblemsHolder holder, RuleConfigLoader ruleConfigLoader) {
StorageUploadVisitor(ProblemsHolder holder, Map<String, RuleConfig> ruleConfigs) {
this.holder = holder;
initializeRuleConfig(ruleConfigLoader);
initializeRuleConfig(ruleConfigs);
}

private void initializeRuleConfig(RuleConfigLoader ruleConfigLoader) {
private void initializeRuleConfig(Map<String, RuleConfig> ruleConfigs) {
if (RULE_CONFIG == null) {
final String ruleName = "StorageUploadWithoutLengthCheck";
RULE_CONFIG = ruleConfigLoader.getRuleConfig(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.skipRuleCheck();
RULE_CONFIG = ruleConfigs.get(ruleName);
SKIP_WHOLE_RULE = RULE_CONFIG.isSkipRuleCheck();
}
}
@Override
Expand Down
Loading