SonarSource / sonarlint-visualstudio

SonarLint extension for VisualStudio
https://redirect.sonarsource.com/doc/sonar-visualstudio.html
GNU Lesser General Public License v3.0
462 stars 77 forks source link

Drop legacy-mode ruleset conflict detection #1378

Closed duncanp-sonar closed 1 year ago

duncanp-sonar commented 4 years ago

Description

The feature to detect when the user has manually configured their local rulesets to weaken the ruleset generated from the Quality Profile should be dropped.

The reasons for dropping the feature are that 1) it's at odds with the "developer-centric" approach of other flavours of SonarLint 2) it's low value, involves a lot of code, and is difficult to maintain

BLOCKED by #1381 - we'd like some additional telemetry to help decide how and when to deprecate/drop this feature.

Background

Currently SLVS adds a ruleset to each MSBuild project during the binding process. This ruleset is empty; it just points to the solution-level generated ruleset.

These project-level rulesets were to support the following feature: 1) Users should be able to customise the rules that are executed per-MSBuild project. 2) However, users should not be able to weaken the set of rules that is run i.e. they should only be able to add more rules or increase the severity of existing rules. The feature is implemented by a "conflicts manager" that compares the "effective" local ruleset against the generated ruleset, looking for differences.

That feature comes from the "central command and control" philosophy that guided the original development of SLVS. It is at odds with the "individual developer choice" philosophy embodied in the other SonarLint flavours.

Notes

This is a legacy-mode-only feature. Other legacy-mode features will not be affected by it's removal. We should decide when/how to remove this feature e.g. deprecate first, or just drop it outright?

Implementation

The ruleset conflict manager (all of the code in SonarLint.VisualStudio.Integration.ProfileConflicts) would be removed, along with the corresponding tests. Product code - 850 lines (6% of the total code base) Test code - 2306 lines (7% of the total test code base)

duncanp-sonar commented 1 year ago

Superceded: change to non-intrusive Connected Mode settings means we will no longer be using rulesets.

See also #4120