Skip to content

Commit 066d2fc

Browse files
authored
Merge pull request #6058 from mavasani/RespectBackgroundAnalysisScopeOmniSharp
Respect the newly added Background analysis scope option in OmniSharp
2 parents c3aff7e + e066d68 commit 066d2fc

File tree

4 files changed

+29
-15
lines changed

4 files changed

+29
-15
lines changed

package.json

-10
Original file line numberDiff line numberDiff line change
@@ -1258,11 +1258,6 @@
12581258
"default": false,
12591259
"description": "If true, MSBuild project system will only load projects for files that were opened in the editor. This setting is useful for big C# codebases and allows for faster initialization of code navigation features only for projects that are relevant to code that is being edited. With this setting enabled OmniSharp may load fewer projects and may thus display incomplete reference lists for symbols."
12601260
},
1261-
"omnisharp.enableRoslynAnalyzers": {
1262-
"type": "boolean",
1263-
"default": false,
1264-
"description": "Enables support for roslyn analyzers, code fixes and rulesets."
1265-
},
12661261
"omnisharp.enableEditorConfigSupport": {
12671262
"type": "boolean",
12681263
"default": true,
@@ -1289,11 +1284,6 @@
12891284
"default": false,
12901285
"description": "(EXPERIMENTAL) Enables support for resolving completion edits asynchronously. This can speed up time to show the completion list, particularly override and partial method completion lists, at the cost of slight delays after inserting a completion item. Most completion items will have no noticeable impact with this feature, but typing immediately after inserting an override or partial method completion, before the insert is completed, can have unpredictable results."
12911286
},
1292-
"omnisharp.analyzeOpenDocumentsOnly": {
1293-
"type": "boolean",
1294-
"default": false,
1295-
"description": "Only run analyzers against open files when 'enableRoslynAnalyzers' is true"
1296-
},
12971287
"omnisharp.testRunSettings": {
12981288
"type": "string",
12991289
"description": "Path to the .runsettings file which should be used when running unit tests."

src/features/diagnosticsProvider.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,18 @@ class OmniSharpDiagnosticsProvider extends AbstractSupport {
135135
) {
136136
super(server, languageMiddlewareFeature);
137137

138-
this._analyzersEnabled = vscode.workspace.getConfiguration('omnisharp').get('enableRoslynAnalyzers', false);
138+
const analyzersEnabledLegacyOption = vscode.workspace
139+
.getConfiguration('omnisharp')
140+
.get('enableRoslynAnalyzers', false);
141+
const useOmnisharpServer = vscode.workspace.getConfiguration('dotnet').get('server.useOmnisharp', false);
142+
const analyzersEnabledNewOption =
143+
vscode.workspace
144+
.getConfiguration('dotnet')
145+
.get<string>(
146+
'backgroundAnalysis.analyzerDiagnosticsScope',
147+
useOmnisharpServer ? 'none' : 'openFiles'
148+
) != 'none';
149+
this._analyzersEnabled = analyzersEnabledLegacyOption || analyzersEnabledNewOption;
139150
this._validationAdvisor = validationAdvisor;
140151
this._diagnostics = vscode.languages.createDiagnosticCollection('csharp');
141152
this._suppressHiddenDiagnostics = vscode.workspace

src/shared/options.ts

+15-2
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,18 @@ export class Options {
119119
'omnisharp.useEditorFormattingSettings',
120120
true
121121
);
122-
const enableRoslynAnalyzers = Options.readOption<boolean>(config, 'omnisharp.enableRoslynAnalyzers', false);
122+
const enableRoslynAnalyzersLegacyOption = Options.readOption<boolean>(
123+
config,
124+
'omnisharp.enableRoslynAnalyzers',
125+
false
126+
);
127+
const diagnosticAnalysisScope = Options.readOption<string>(
128+
config,
129+
'dotnet.backgroundAnalysis.analyzerDiagnosticsScope',
130+
useOmnisharpServer ? 'none' : 'openFiles'
131+
);
132+
const enableRoslynAnalyzersNewOption = diagnosticAnalysisScope != 'none';
133+
const enableRoslynAnalyzers = enableRoslynAnalyzersLegacyOption || enableRoslynAnalyzersNewOption;
123134
const enableEditorConfigSupport = Options.readOption<boolean>(
124135
config,
125136
'omnisharp.enableEditorConfigSupport',
@@ -138,11 +149,13 @@ export class Options {
138149
'omnisharp.enableImportCompletion'
139150
);
140151
const enableAsyncCompletion = Options.readOption<boolean>(config, 'omnisharp.enableAsyncCompletion', false);
141-
const analyzeOpenDocumentsOnly = Options.readOption<boolean>(
152+
const analyzeOpenDocumentsOnlyLegacyOption = Options.readOption<boolean>(
142153
config,
143154
'omnisharp.analyzeOpenDocumentsOnly',
144155
false
145156
);
157+
const analyzeOpenDocumentsOnlyNewOption = diagnosticAnalysisScope == 'openFiles';
158+
const analyzeOpenDocumentsOnly = analyzeOpenDocumentsOnlyLegacyOption || analyzeOpenDocumentsOnlyNewOption;
146159
const organizeImportsOnFormat = Options.readOption<boolean>(config, 'omnisharp.organizeImportsOnFormat', false);
147160
const disableMSBuildDiagnosticWarning = Options.readOption<boolean>(
148161
config,

test/unitTests/options.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ suite('Options tests', () => {
3232
options.omnisharpOptions.minFindSymbolsFilterLength.should.equal(0);
3333
options.omnisharpOptions.maxFindSymbolsItems.should.equal(1000);
3434
options.omnisharpOptions.enableMsBuildLoadProjectsOnDemand.should.equal(false);
35-
options.omnisharpOptions.enableRoslynAnalyzers.should.equal(false);
35+
options.omnisharpOptions.enableRoslynAnalyzers.should.equal(true);
3636
options.omnisharpOptions.enableEditorConfigSupport.should.equal(true);
3737
options.omnisharpOptions.enableDecompilationSupport.should.equal(false);
3838
options.omnisharpOptions.enableImportCompletion.should.equal(false);
3939
options.omnisharpOptions.enableAsyncCompletion.should.equal(false);
40-
options.omnisharpOptions.analyzeOpenDocumentsOnly.should.equal(false);
40+
options.omnisharpOptions.analyzeOpenDocumentsOnly.should.equal(true);
4141
options.omnisharpOptions.testRunSettings.should.equal('');
4242
});
4343

0 commit comments

Comments
 (0)