Skip to content

SLVS-2865 Display analyzer plugin information#6668

Open
tom-shafir-sonarsource wants to merge 9 commits intomasterfrom
feature/SLVS-2831-analyzers-management-in-slcore-REBASED
Open

SLVS-2865 Display analyzer plugin information#6668
tom-shafir-sonarsource wants to merge 9 commits intomasterfrom
feature/SLVS-2831-analyzers-management-in-slcore-REBASED

Conversation

@tom-shafir-sonarsource
Copy link
Contributor

No description provided.

tom-shafir-sonarsource and others added 7 commits March 16, 2026 14:06
Part of 
<!-- 
  Only for standalone PRs without Jira issue in the PR title: 
    * Replace this comment with Epic ID to create a new Task in Jira
* Replace this comment with Issue ID to create a new Sub-Task in Jira
* Ignore or delete this note to create a new Task in Jira without a
parent
-->
@hashicorp-vault-sonar-prod
Copy link

hashicorp-vault-sonar-prod bot commented Mar 25, 2026

SLVS-2831

@sonar-review-alpha
Copy link

sonar-review-alpha bot commented Mar 25, 2026

Summary

Adds UI for displaying analyzer plugin information and status. Introduces new backend integration models for plugin status management, a dialog window showing plugin details (name, state, source, versions), and related telemetry events. Also updates SLOOP to 10.48 and adds custom scroll bar styling to support the new dialog UI.

What reviewers should know

Key areas to review:

  1. Backend Models (src/SLCore/Service/Plugin/): New DTOs (PluginStatusDto, PluginStateDto, ArtifactSourceDto) and service interface IPluginSLCoreService define the contract with SLCORE. Check that enums and records properly represent plugin lifecycle states.

  2. Plugin Status Management (src/Integration/SupportedLanguages/):

    • PluginStatusesStore: Core logic for fetching from SLCORE, caching, and notifying on changes. Key methods: FetchPluginStatusesAsync(), OnDidChangePluginStatuses(), Update(). Watch for thread safety (uses locks).
    • PluginStatusDtoToPluginStatusDisplayConverter: Converts backend DTOs to UI-friendly objects. Check the source text formatting logic.
    • FailedPluginNotification: Notifies users when plugins fail to load.
  3. UI Dialog (src/Integration.Vsix/SupportedLanguages/):

    • SupportedLanguagesDialogWindow.xaml: 296 lines of XAML with DataGrid showing plugin information. Note the custom scroll bar styles merged from ConnectedMode resources.
    • SupportedLanguagesDialogViewModel: Handles dialog state, filters plugins by state, manages banner display (connection/binding status), and triggers telemetry events.
    • SupportedLanguagesWindowService: Provides access to the dialog window.
    • SupportedLanguagesCommand: Menu command registration (in vsct file) to open the dialog.
  4. Telemetry: Two new events added to ITelemetryManager for tracking panel usage (SupportedLanguagesPanelOpened, SupportedLanguagesPanelCtaClicked).

  5. Tests: Comprehensive unit test coverage added for store, converter, notification, and UI components. All test projects updated with SLCore dependency.

Watch for:

  • Thread safety in PluginStatusesStore when updating plugin list
  • DataGrid binding correctness and styling consistency with VS theme
  • Banner state transitions (NoConnection → NotBound → PluginFailed logic)
  • Premium plugin filtering (should only show in specific scenarios)

  • Generate Walkthrough
  • Generate Diagram

🗣️ Give feedback

sonar-review-alpha[bot]

This comment was marked as resolved.

@tom-shafir-sonarsource tom-shafir-sonarsource changed the title SLVS-2831 Display analyzer plugin information SLVS-2865 Display analyzer plugin information Mar 25, 2026
Copy link
Contributor

@vnaskos-sonar vnaskos-sonar left a comment

Choose a reason for hiding this comment

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

Tested on my machine, worked as expected! 👍

@sonarqubecloud
Copy link

sonar-review-alpha[bot]

This comment was marked as resolved.

Copy link

@sonar-review-alpha sonar-review-alpha bot left a comment

Choose a reason for hiding this comment

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

LGTM! ✅

No new issues found, but the race condition flagged in the open review thread — stale config-scope results overwriting current data in FetchPluginStatusesAsync — is still not addressed and needs to be resolved before merge.

🗣️ Give feedback

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants