Skip to content

Commit 219e83a

Browse files
Final polish
1 parent f3cb27f commit 219e83a

File tree

4 files changed

+11
-15
lines changed

4 files changed

+11
-15
lines changed

src/commands/code-analyzer/config.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {EnginePluginsFactoryImpl} from '../../lib/factories/EnginePluginsFactory
88
import {BundleName, getMessage, getMessages} from '../../lib/messages';
99
import {LogEventDisplayer} from '../../lib/listeners/LogEventListener';
1010
import {RuleSelectionProgressSpinner} from '../../lib/listeners/ProgressEventListener';
11-
import {AnnotatedConfigModel} from '../../lib/models/ConfigModel';
1211
import {Displayable, UxDisplay} from '../../lib/Display';
1312

1413
export default class ConfigCommand extends SfCommand<void> implements Displayable {
@@ -67,7 +66,6 @@ export default class ConfigCommand extends SfCommand<void> implements Displayabl
6766
pluginsFactory: new EnginePluginsFactoryImpl(),
6867
logEventListeners: [new LogEventDisplayer(uxDisplay)],
6968
progressEventListeners: [new RuleSelectionProgressSpinner(uxDisplay)],
70-
modelGenerator: AnnotatedConfigModel,
7169
actionSummaryViewer: new ConfigActionSummaryViewer(uxDisplay),
7270
viewer: new ConfigStyledYamlViewer(uxDisplay)
7371
};

src/lib/actions/ConfigAction.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@ import {createWorkspace} from '../utils/WorkspaceUtil';
88
import {LogEventListener, LogEventLogger} from '../listeners/LogEventListener';
99
import {ProgressEventListener} from '../listeners/ProgressEventListener';
1010
import {ConfigActionSummaryViewer} from '../viewers/ActionSummaryViewer';
11-
import {ConfigModel, ConfigModelConstructor} from '../models/ConfigModel';
11+
import {AnnotatedConfigModel, ConfigModel} from '../models/ConfigModel';
1212

1313
export type ConfigDependencies = {
1414
configFactory: CodeAnalyzerConfigFactory;
1515
pluginsFactory: EnginePluginsFactory;
16-
modelGenerator: ConfigModelConstructor;
1716
logEventListeners: LogEventListener[];
1817
progressEventListeners: ProgressEventListener[];
1918
writer?: ConfigWriter;
@@ -109,7 +108,7 @@ export class ConfigAction {
109108
// We need the Set of all Engines that returned rules for the user's selection on both the Default and User Cores.
110109
const relevantEngines: Set<string> = new Set([...userRules.getEngineNames(), ...selectedDefaultRules.getEngineNames()]);
111110

112-
const configModel: ConfigModel = new this.dependencies.modelGenerator(userConfig, userCore, userRules, allDefaultRules, relevantEngines);
111+
const configModel: ConfigModel = new AnnotatedConfigModel(userConfig, userCore, userRules, allDefaultRules, relevantEngines);
113112

114113
const fileWritten: boolean = this.dependencies.writer
115114
? await this.dependencies.writer.write(configModel)

src/lib/models/ConfigModel.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import {dump as yamlDump} from 'js-yaml';
22
import {
33
CodeAnalyzer,
44
CodeAnalyzerConfig,
5-
ConfigDescription, ConfigFieldDescription,
5+
ConfigDescription,
6+
ConfigFieldDescription,
67
EngineConfig,
78
Rule,
89
RuleSelection,
@@ -21,13 +22,16 @@ export interface ConfigModel {
2122
toFormattedOutput(format: OutputFormat): string;
2223
}
2324

24-
export type ConfigModelConstructor = new (config: CodeAnalyzerConfig, codeAnalyzer: CodeAnalyzer, userRules: RuleSelection, allDefaultRules: RuleSelection, relevantEngines: Set<string>) => ConfigModel;
25-
2625
export class AnnotatedConfigModel implements ConfigModel {
2726
private readonly config: CodeAnalyzerConfig; // TODO: It would be nice if we updated the CodeAnalyzer (in our core module) to just return its CodeAnalyzerConfig with a getter so we didn't need to pass it around
2827
private readonly codeAnalyzer: CodeAnalyzer;
2928
private readonly userRules: RuleSelection;
3029
private readonly allDefaultRules: RuleSelection;
30+
31+
// Note that it is important that we calculate the relevant engines list based on (the user rule selection with no
32+
// config) plus (user rule selection with user config) since we still want to show the "disable_engine" config value
33+
// in the output if a user even if selects an engine that is currently disabled. But we don't want to the engine
34+
// configs not associated with the user's rule selection, thus we can't use the engines from allDefaultRules.
3135
private readonly relevantEngines: Set<string>;
3236

3337
constructor(config: CodeAnalyzerConfig, codeAnalyzer: CodeAnalyzer, userRules: RuleSelection, allDefaultRules: RuleSelection, relevantEngines: Set<string>) {
@@ -199,11 +203,11 @@ abstract class YamlFormatter {
199203
// assume that the object is not undefined.
200204
for (const configField of Object.keys(engineConfigDescriptor.fieldDescriptions)) {
201205
const fieldDescription: ConfigFieldDescription = engineConfigDescriptor.fieldDescriptions[configField];
202-
const userValue = userEngineConfig[configField] ?? fieldDescription.defaultValue;
206+
const resolvedValue = userEngineConfig[configField] ?? fieldDescription.defaultValue;
203207
// Add a leading newline to visually break up the property from the previous one.
204208
yamlCode += '\n' +
205209
indent(this.toYamlComment(fieldDescription.descriptionText), 2) + '\n' +
206-
indent(this.toYamlFieldUsingFieldDescription(configField, userValue, fieldDescription), 2) + '\n';
210+
indent(this.toYamlFieldUsingFieldDescription(configField, resolvedValue, fieldDescription), 2) + '\n';
207211
}
208212
return yamlCode.trimEnd();
209213
}

test/lib/actions/ConfigAction.test.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import * as EngineApi from "@salesforce/code-analyzer-engine-api";
88
import {CodeAnalyzerConfigFactory} from "../../../src/lib/factories/CodeAnalyzerConfigFactory";
99
import {EnginePluginsFactory} from '../../../src/lib/factories/EnginePluginsFactory';
1010
import {ConfigAction, ConfigDependencies, ConfigInput} from '../../../src/lib/actions/ConfigAction';
11-
import {AnnotatedConfigModel} from '../../../src/lib/models/ConfigModel';
1211
import {ConfigStyledYamlViewer} from '../../../src/lib/viewers/ConfigViewer';
1312
import {ConfigActionSummaryViewer} from '../../../src/lib/viewers/ActionSummaryViewer';
1413

@@ -37,7 +36,6 @@ describe('ConfigAction tests', () => {
3736
progressEventListeners: [],
3837
viewer: new ConfigStyledYamlViewer(spyDisplay),
3938
configFactory: new DefaultStubCodeAnalyzerConfigFactory(),
40-
modelGenerator: AnnotatedConfigModel,
4139
actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay),
4240
pluginsFactory: new StubEnginePluginFactory()
4341
};
@@ -164,7 +162,6 @@ describe('ConfigAction tests', () => {
164162
progressEventListeners: [],
165163
viewer: new ConfigStyledYamlViewer(spyDisplay),
166164
configFactory: stubConfigFactory,
167-
modelGenerator: AnnotatedConfigModel,
168165
actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay),
169166
pluginsFactory: new StubEnginePluginFactory()
170167
};
@@ -397,7 +394,6 @@ describe('ConfigAction tests', () => {
397394
progressEventListeners: [],
398395
viewer: new ConfigStyledYamlViewer(spyDisplay),
399396
configFactory: new DefaultStubCodeAnalyzerConfigFactory(),
400-
modelGenerator: AnnotatedConfigModel,
401397
actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay),
402398
pluginsFactory: new StubEnginePluginFactory()
403399
};
@@ -446,7 +442,6 @@ describe('ConfigAction tests', () => {
446442
progressEventListeners: [],
447443
viewer: new ConfigStyledYamlViewer(spyDisplay),
448444
configFactory: new DefaultStubCodeAnalyzerConfigFactory(),
449-
modelGenerator: AnnotatedConfigModel,
450445
actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay),
451446
pluginsFactory: new StubEnginePluginFactory()
452447
}

0 commit comments

Comments
 (0)