Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 1 addition & 1 deletion sfge/src/main/java/com/salesforce/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ private int catalog() {
LOGGER.info("Invoked CATALOG flow");
List<AbstractRule> rules;
try {
rules = RuleUtil.getAllRules();
rules = RuleUtil.getEnabledRules();
} catch (SfgeException | SfgeRuntimeException ex) {
System.err.println(ex.getMessage());
return INTERNAL_ERROR;
Expand Down
10 changes: 7 additions & 3 deletions sfge/src/main/java/com/salesforce/cli/CliArgParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,13 @@ private List<String> readFile(String fileName) throws IOException {

private void identifyRules(List<String> rulesToRun) {
try {
for (String ruleName : rulesToRun) {
AbstractRule rule = RuleUtil.getRule(ruleName);
selectedRules.add(rule);
if (rulesToRun.isEmpty()) {
selectedRules.addAll(RuleUtil.getEnabledRules());
} else {
for (String ruleName : rulesToRun) {
AbstractRule rule = RuleUtil.getRule(ruleName);
selectedRules.add(rule);
}
}
} catch (RuleUtil.RuleNotFoundException ex) {
throw new InvocationException(ex.getMessage(), ex);
Expand Down
5 changes: 5 additions & 0 deletions sfge/src/main/java/com/salesforce/rules/AbstractRule.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ public Descriptor getDescriptor() {
// probably un-abstract this method.
protected abstract String getCategory();

protected boolean isEnabled() {
// By default, every rule is disabled, unless specifically enabled
return false;
}

/**
* Unless the rule has a predetermined URL, we'll return a link to information about the engine.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ protected String getUrl() {
return URL;
}

@Override
protected boolean isEnabled() {
return true;
}

@Override
protected List<RuleThrowable> _run(GraphTraversalSource g, ApexPath path, BaseSFVertex vertex) {
final HashSet<FlsViolationInfo> flsViolationInfos = new HashSet<>();
Expand Down
10 changes: 8 additions & 2 deletions sfge/src/main/java/com/salesforce/rules/RuleUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,12 @@ public static List<MethodVertex> getPathEntryPoints(
return new ArrayList<>(methods);
}

public static List<AbstractRule> getAllRules() throws RuleNotFoundException {
public static List<AbstractRule> getEnabledRules() throws RuleNotFoundException {
final List<AbstractRule> allRules = getAllRules();
return allRules.stream().filter(rule -> rule.isEnabled()).collect(Collectors.toList());
}

static List<AbstractRule> getAllRules() throws RuleNotFoundException {
// Get a set of every class in the Rules package that extends AbstractRule.
Reflections reflections = new Reflections(PackageConstants.RULES_PACKAGE);
Set<Class<? extends AbstractRule>> ruleTypes =
Expand All @@ -94,7 +99,8 @@ public static List<AbstractRule> getAllRules() throws RuleNotFoundException {
for (Class<? extends AbstractRule> ruleType : ruleTypes) {
// Skip abstract classes.
if (!Modifier.isAbstract(ruleType.getModifiers())) {
rules.add(getRuleInner(ruleType.getName()));
final AbstractRule rule = getRuleInner(ruleType.getName());
rules.add(rule);
}
}
return rules;
Expand Down
4 changes: 3 additions & 1 deletion sfge/src/test/java/com/salesforce/rules/RuleUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,9 @@ public void getPathEntryPoints_includeMethodAndFileLevelTargets() {
@Test
public void getAllRules_noExceptionThrown() {
try {
List<AbstractRule> allRules = RuleUtil.getAllRules();
List<AbstractRule> allRules = RuleUtil.getEnabledRules();
MatcherAssert.assertThat(allRules, hasSize(1));
assertTrue(allRules.contains(ApexFlsViolationRule.getInstance()));
} catch (Exception ex) {
fail("Unexpected " + ex.getClass().getSimpleName() + ": " + ex.getMessage());
}
Expand Down
4 changes: 0 additions & 4 deletions src/lib/sfge/SfgeEngine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,6 @@ export class SfgeEngine extends AbstractRuleEngine {
const categoryNames: Set<string> = new Set();

partialRules.forEach(({name, description, category}) => {
// TODO: This should be accomplished by actually disabling the rules within SFGE, instead of this hacky fix.
if (name !== 'ApexFlsViolationRule') {
return;
}
completeRules.push({
engine: ENGINE.SFGE,
sourcepackage: "sfge",
Expand Down