- Introduce
org.sonarsource.sonarlint.core.rpc.protocol.backend.plugin.PluginRpcService, accessible viaorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcServer#getPluginService.- Use
getPluginStatusesto populate the "Supported Languages" panel with the full list of known analyzer statuses (one entry per language, including unsupported ones). - Pass a
configurationScopeIdto get statuses in the context of its bound connection, ornullfor standalone statuses. - Each
org.sonarsource.sonarlint.core.rpc.protocol.backend.plugin.PluginStatusDtocontains: plugin name, state (org.sonarsource.sonarlint.core.rpc.protocol.backend.plugin.PluginStateDto), source (org.sonarsource.sonarlint.core.rpc.protocol.backend.plugin.ArtifactSourceDto), actual version, and overridden version if applicable.
- Use
- Add a new
didChangePluginStatusesnotification toorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.- Implement it to keep the "Supported Languages" panel up to date after the initial load.
- Called when plugin statuses change, e.g. after a sync with a connection or when a connection is removed.
- Add
closedByUserflag toorg.sonarsource.sonarlint.core.rpc.protocol.client.message.ShowMessageRequestResponse. It must be set totrueif theshowMessageRequestwas explicitly closed by the user (e.g. via clicking X on the notification)
- Remove the flight recorder feature. This should be handled by clients
- Add
org.sonarsource.sonarlint.core.rpc.client.Sloop.getPidto return the pid of the backend process. - Add a new
PROMOTIONAL_CAMPAIGNScapability inorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.BackendCapability. Clients using the feature need to declare it at initialization time. Enables promotional campaign notifications and tracking user responses to not show again or postpone showing them. Data about shown notifications and user responses is saved separately for each IDE in the similar manner to telemetry in path:{sonarUserHome}/campaigns/{productKey}/campaigns - Add a new
KIROvalue toorg.sonarsource.sonarlint.core.rpc.protocol.backend.ai.AiAgentenum.
- Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.sca.DependencyRiskRpcService.getDependencyRiskDetailsmethod and associated DTOs.
- Add a new
GESSIE_TELEMETRYcapability inorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.BackendCapability. Clients using the feature need to declare it at initialization time. Enables sending data to Gessie (Generic Event System) alongside previous telemetry implementation.
- Deprecate 4-parameter constructor and remove deprecation of 2-parameter one of
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.DidUpdateBindingParams. Move back to an old constructor as not all IDEs were able to provide all data to a new one. - Remove Deprecation from
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService#addedManualBindingsmethod. It should be used again for manual binding events instead of parametrizeddidUpdateBinding.
- Add ide labs flags to
org.sonarsource.sonarlint.core.rpc.protocol.client.telemetry.TelemetryClientLiveAttributesResponse. - Introduce 2 new methods to
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcServiceto record Ide Labs telemetry:externalLinkClicked,feedbackLinkClicked. - Introduce a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService.acceptedBindingSuggestion. It should be used to for bindings created based on suggestions and passorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigininstead of parametrizeddidUpdateBinding.
org.sonarsource.sonarlint.core.rpc.protocol.backend.ai.AiAssistedIdeRpcServicehas been renamed toorg.sonarsource.sonarlint.core.rpc.protocol.backend.ai.AiAgentService.org.sonarsource.sonarlint.core.rpc.protocol.backend.ai.AiAssitedIdehas been renamed toorg.sonarsource.sonarlint.core.rpc.protocol.backend.ai.AiAgent.org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcServer#getAiAssistedIdeRpcServicehas been renamed toorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcServer#getAiAgentService.- Replace
VSCODEandVSCODE_INSIDERSwithGITHUB_COPILOTinorg.sonarsource.sonarlint.core.rpc.protocol.backend.ai.AiAgentenum.- This better reflects that the distinction is about the AI agent (GitHub Copilot), not the IDE
- Introduce a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.labs.IdeLabsRpcServiceservice and ajoinIdeLabsProgrammethod.- Use it to allow users to join the SonarQube for IDE Labs program
- The method accepts user email and IDE name as parameters
- Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.FeatureFlagsDtoclass. - Remove unused methods from
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService:getGlobalStandaloneConfigurationgetGlobalConnectedConfigurationgetAnalysisConfiggetRuleDetails
- Add a new
CONTEXT_GENERATIONvalue inorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.BackendCapability. Clients using the feature need to declare it at initialization time. This is only accessible in dogfooding environments, and should be enabled in AI-related environments. - Introduce a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.log.LogRpcServiceservice, with a newsetLogLevelmethod. This allows clients to dynamically change the logging level. - Introduce a new constructor in
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParams, that accepts aLogLevelparameter.
- Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParamsprevious constructor. Please use the new one and provide the log level.
- Add a new endpoint
/sonarlint/api/analysis/automatic/configin the embedded server to globally disable or enable the automatic analysis.- This endpoint should be used by external clients such as MCP servers.
- Add a new endpoint
/sonarlint/api/analysis/filesin our embedded server to analyze a list of files and return the issues, hotspots and taints found.- This endpoint should be used by external clients such as MCP servers.
- Add a new
getMCPServerConfigurationmethod toorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.ConnectionRpcService- It accepts
connectionIdandtokenas parameters - It returns JSON string containing MCP server settings (without the
sonarqubeparent item)
- It accepts
- Introduce a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.ai.AiAssistedIdeRpcServiceservice and agetRuleFileContentmethod.- Use it to retrieve the content of the rule file to write to provide guidance to the agent when using the SonarQube MCP server.
- Introduce an RPC notification
embeddedServerStartedinorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient- It is sent by the backend to notify the client that the embedded server has started
- It contains the embedded server port
- Example usage is by the MCP Server to establish the bridge connection
- Add a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService.mcpIntegrationEnabledmethod.- Should only be used by SonarQube MCP Server when integration with SQ:IDE is enabled and valid
- Add a new
FLIGHT_RECORDERvalue inorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.BackendCapability. Clients using the feature need to declare it at initialization time. Important note: theMONITORINGcapability is also required by this feature. - Add a new optional backend-to-client notification
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#flightRecorderStarted. Clients can implement this notification to inform end users about a starting flight recorder session. - Add a new service to the backend API:
org.sonarsource.sonarlint.core.rpc.protocol.backend.flightrecorder.FlightRecordingRpcServicecan be used to interact with the flight recorder (e.g. to capture a thread dump of the current backend process) - Add a new
CURRENT_FILE_ANALYSIS_TYPEto theorg.sonarsource.sonarlint.core.rpc.protocol.client.telemetry.AnalysisReportingTypeenum. This value can be used when reporting telemetry for forced analysis of currently open file.
- Clients can now access more granular origin information via the
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionDto,org.sonarsource.sonarlint.core.rpc.protocol.backend.config.connection.ConnectionSuggestionDtoandorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.AssistBindingParams. - Added
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingModeandorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigintoorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.DidUpdateBindingParamsand allowed clients to provide this information when callingorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.ConfigurationRpcService#didUpdateBindingwhich will trigger telemetry events for binding updates. Clients no longer need to call separate telemetry methods while adding bindings.
- Clients are normally not expected to use following constructors directly, but if they do perhaps in their tests, it's a potential breaking change.
- Removed the
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionDtoconstructor withorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionDto#isFromSharedConfigurationparameter. Clients should use theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionDto#originparameter if it is used in their tests.org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigin.SHARED_CONFIGURATIONcan be used if it was true, otherwise it wouldn't matter which other origin used, they can default toorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigin.PROJECT_NAME - Removed the
org.sonarsource.sonarlint.core.rpc.protocol.client.connection.ConnectionSuggestionDtoconstructor withorg.sonarsource.sonarlint.core.rpc.protocol.client.connection.ConnectionSuggestionDto#isFromSharedConfigurationparameter. Clients should use theorg.sonarsource.sonarlint.core.rpc.protocol.client.connection.ConnectionSuggestionDto#originparameter if it is used in their tests.org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigin.SHARED_CONFIGURATIONcan be used if it was true, otherwise it wouldn't matter which other origin used, they can default toorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigin.PROJECT_NAME - Removed the
org.sonarsource.sonarlint.core.rpc.protocol.client.binding.AssistBindingParamsconstructor withorg.sonarsource.sonarlint.core.rpc.protocol.client.binding.AssistBindingParams#isFromSharedConfigurationparameter. Clients should use theorg.sonarsource.sonarlint.core.rpc.protocol.client.binding.AssistBindingParams#originparameter if it is used in their tests.org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigin.SHARED_CONFIGURATIONcan be used if it was true, otherwise it wouldn't matter which other origin used, they can default toorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOrigin.PROJECT_NAME
- Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.client.connection.ConnectionSuggestionDto#isFromSharedConfigurationmethod since it is not used anymore. Useorg.sonarsource.sonarlint.core.rpc.protocol.client.connection.ConnectionSuggestionDto#getOrigininstead. - Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionDto#isFromSharedConfigurationmethod since it is not used anymore. Useorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionDto#getOrigininstead. - Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.AssistBindingParams#isFromSharedConfigurationmethod since it is not used anymore. Useorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.AssistBindingParams#getOrigininstead. - Deprecate
isFromSharedConfigurationparameter fromorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.AssistBindingParams. - Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.AssistBindingParamsconstructor. Use the other one. - Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.DidUpdateBindingParamsconstructor. Use the other one. - Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService#addedManualBindingsmethod. This will be automatically handled by passing theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOriginandorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingModeto theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.DidUpdateBindingParamsconstructor during theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.ConfigurationRpcService#didUpdateBindingcall. - Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService#addedImportedBindingsmethod. This will be automatically handled by passing theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOriginandorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingModeto theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.DidUpdateBindingParamsconstructor during theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.ConfigurationRpcService#didUpdateBindingcall. - Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService#addedAutomaticBindingsmethod. This will be automatically handled by passing theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionOriginandorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingModeto theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.DidUpdateBindingParamsconstructor during theorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.ConfigurationRpcService#didUpdateBindingcall.
- Fields
vulnerabilityIdanddescriptionfromorg.sonarsource.sonarlint.core.rpc.protocol.backend.sca.GetDependencyRiskDetailsResponseare now nullable.- Dependency risks of type
PROHIBITED_LICENSEdo not have a vulnerability ID or description.
- Dependency risks of type
- Add
TEXTlanguage toorg.sonarsource.sonarlint.core.commons.api.SonarLanguage- Enabling this language allows detecting text issues
- Add
GITHUBACTIONSlanguage toorg.sonarsource.sonarlint.core.commons.api.SonarLanguage- Enabling this language allows detecting issues on GitHub Actions
- Add new method
org.sonarsource.sonarlint.core.rpc.protocol.backend.sca.DependencyRiskRpcService#checkSupportedto check if dependency risks are supported by the server- It returns the reason in case the server does not support dependency risks
- Introduce new fields
vulnerabilityIdandcvssScoreinorg.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.DependencyRiskDto- The
vulnerabilityIdis a unique identifier for the vulnerability such asCVE-1234, and thecvssScoreis the Common Vulnerability Scoring System score for the vulnerability - They are null in case the dependency risk is of type
PROHIBITED_LICENSE
- The
- Merge
org.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.DependencyRiskTrackingRpcServiceintoorg.sonarsource.sonarlint.core.rpc.protocol.backend.sca.DependencyRiskRpcService. - Rename
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.didChangeScaIssuestoorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.didChangeDependencyRisks.
- Allow changing status of dependency risks (SCA issues) via
org.sonarsource.sonarlint.core.rpc.protocol.backend.sca.DependencyRiskRpcService.changeStatus.- Required parameters are
configScopeId,dependencyRiskKeyandtransition. - If transition is
ACCEPTorSAFE, acommentfield is mandatory
- Required parameters are
- Allow clients to open dependency risk in browser
- Introduce
org.sonarsource.sonarlint.core.rpc.protocol.backend.sca.DependencyRiskRpcService.openDependencyRiskInBrowserthat acceptsconfigScopeIdanddependencyRiskKey(UUID) parameters
- Introduce
- Allow clients to record interactions with dependency risks in telemetry
- Introduce
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService.dependencyRiskInvestigatedLocallymethod
- Introduce
- Add a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.sca.DependencyRiskRpcService.getDependencyRiskDetails.
- Add a new
SCA_SYNCHRONIZATIONvalue inorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.BackendCapability. Clients using the feature need to declare it at initialization time. - Introduce a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.ScaIssueTrackingRpcServiceservice and alistAllmethod - Introduce a new
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.didChangeScaIssuesnotification.
- Add a new
ISSUE_STREAMINGvalue inorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.BackendCapability. Clients using the feature need to declare it at initialization time.
- Add a new optional parameter to
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.HelpGenerateUserTokenParamsto track SonarQube Cloud account creation through token generation.
- The RPC client method
org.sonarsource.sonarlint.core.rpc.protocol.backend.file.getFilesStatuspreviously returned information exclusively about server exclusions. It now includes the same exclusion criteria as used during the analysis (client exclusions, gitignore, etc.).
- Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#matchProjectBranchmethod since it is not used anymore.
- Add a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService.toolCalledmethod. - Add a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.ConnectionRpcService.getConnectionSuggestionsmethod.- This method is used to get connection suggestions for a given configuration scope.
- The method should only be used when neither connection nor binding exists for a given configuration scope.
- If a connection already exists, a
org.sonarsource.sonarlint.core.rpc.protocol.backend.binding.BindingRpcService.getBindingSuggestionsshould be used instead
- Remove
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.UserTokenRpcServiceandorg.sonarsource.sonarlint.core.rpc.impl.SonarLintRpcServerImpl.getUserTokenService. They were not useful anymore. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.HelpGenerateUserTokenParamsdeprecated constructor. Use the other one. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.ConnectionRpcService#checkSmartNotificationsSupportedmethod and associated parameter and response. They were not useful anymore. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.common.TransientSonarCloudConnectionDtodeprecated constructor. Use the other one. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.config.SonarCloudConnectionConfigurationDtodeprecated constructor. Use the other one. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.rules.GetEffectiveRuleDetailsParamsdeprecated constructor. Use the other one. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.SonarCloudAlternativeEnvironmentDtodeprecated constructors. Use the other one. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.ClientConstantInfoDtodeprecated constructor and thegetPidgetter. They were not useful anymore. - Remove the
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.org.GetOrganizationParamsdeprecated constructor. Use the other one.
- Add a new constructor to
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParamsconstructor to provide flags as an enum values list. - Add
analysisReportingTriggeredmethod toorg.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService- It is used to report usage of analysis features such as the analysis of VCS changed files, all project files or for the pre-commit analysis
- Should not be implemented unless necessary
- Deprecate
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.FeatureFlagsDtoclass.
- Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalyzeFilesAndTrackParamsconstructor, and replace it with a new one without thestartTimeparameter, that is no longer relevant.
- Add a new constructor to
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.SonarCloudAlternativeEnvironmentDtoto accept a map ofSonarCloudRegiontoSonarQubeCloudRegionDto.- Per region a
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.SonarQubeCloudRegionDtomust be provided that contains the base, API and WebSocket URIs. nullvalues are accepted for every URI - it will internally fallback to the actual region URIs for anullvalue encountered.
- Per region a
- Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.ConnectionRpcService.checkSmartNotificationsSupportedmethod. It always returns that notifications are supported.
- Introduce a new
org.sonarsource.sonarlint.core.rpc.protocol.backend.remediation.aicodefix.AiCodeFixRpcServiceclass, containing asuggestFix(SuggestFixParams)method. - Introduce a new
isAiCodeFixablemethod inorg.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaisedIssueDto.
- Deprecate the
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.SonarCloudAlternativeEnvironmentDtoconstructor. It is replaced by an overload in which the new API base URL should be provided.
-
Add new method
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#invalidTokento notify client that WebAPI calls to SQS/SQC fails due to wrong token- Client can implement this method to offer user to change credentials for the connection to fix the problem
- For now notification is being sent only for 401 Unauthorized HTTP response code since it's corresponds to malformed/wrong token and ignores 403 Forbidden response code since it's a user permissions problem that has to be addressed on the server
- Also once notification sent, backend doesn't attempt to send any requests to server anymore until credentials changed
-
Add
regiontoorg.sonarsource.sonarlint.core.rpc.protocol.client.connection.SonarCloudConnectionParamsandorg.sonarsource.sonarlint.core.rpc.protocol.client.connection.SonarCloudConnectionSuggestionDtoto support multi-region SQC connection configuration- Constructor without region parameter is removed
-
Removed
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#didRaiseIssueand associated types. SeeraiseIssuesandraiseHotspotsinstead. -
Removed
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcServer#getIssueTrackingServiceand associated types. Tracking is managed by the backend. -
Removed
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcServer#getSecurityHotspotMatchingServiceand associated types. Tracking is managed by the backend. -
Removed
org.sonarsource.sonarlint.core.rpc.protocol.client.connection.AssistCreatingConnectionParams#getServerUrl(). UsegetConnectionParamsinstead. -
Removed
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService#analyzeFiles. UseanalyzeFilesAndTrackinstead. -
Removed deprecated methods in
org.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaisedFindingDto:getSeveritygetTypegetCleanCodeAttributegetImpacts- Use
getSeverityModeinstead.
-
Removed deprecated methods in
org.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.TaintVulnerabilityDto:getSeveritygetTypegetCleanCodeAttributegetImpacts- Use
getSeverityModeinstead.
- Add SonarCloud region parameter to
org.sonarsource.sonarlint.core.rpc.protocol.client.connection.SonarCloudConnectionParamsorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.common.TransientSonarCloudConnectionDtoorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.config.SonarCloudConnectionConfigurationDtoorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.org.FuzzySearchUserOrganizationsParamsorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.org.GetOrganizationParamsorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.org.ListUserOrganizationsParams- This is in order to support multi-region SQC connection configuration. Constructors without region parameter are deprecated
org.sonarsource.sonarlint.core.commons.monitoring.MonitoringService#newTrace(String, String)can be used internally to initialize a manual trace in Sentry- When monitoring is enabled, 1% of all analysis requests are sent to Sentry's performance tracing feature
- Two new system properties can be used to tune the behavior of the Sentry integration:
sonarlint.internal.monitoring.dsnoverrides the default DSN (e.g. for tests)sonarlint.internal.monitoring.tracesSampleRate, parsed as ajava.lang.Double, overrides the default sampling rate of analysis requests
- New feature flag
enableMonitoringinorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.FeatureFlagsDtoallows clients to opt into monitoring with Sentry
- Introduce
org.sonarsource.sonarlint.core.rpc.protocol.backend.dogfooding.DogfoodingRpcService.isDogfoodingEnvironmentmethod to allow clients to know if it is running in a dogfooding environment- Will return
trueifSONARSOURCE_DOGFOODINGenvironment variable is set and equals"1" - Will return
falsein all other cases
- Will return
- Introduce opt-in monitoring via Sentry
- As a first step, the monitoring service is only initialized in dogfooding environments when the feature flag is set
- All logging events sent to the client at the
ERRORlevel are reported as monitoring events
- Adapt
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParams.languageSpecificRequirements to accept org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.JsTsRequirementsDtoinstead ofclientNodeJsPath
- Introduce
bundlePathinitialization parameter inorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.JsTsRequirementsDtoto allow clients to provide the path to the unzipped es-lint bridge bundle- The path will be passed down to the Js/Ts/CSS analyzer and will indicate that the analyzer does not need to unzip the bundle itself, thus reducing the usage of the
.sonarlinttemporary storage - Provide
nullto keep the previous behavior
- The path will be passed down to the Js/Ts/CSS analyzer and will indicate that the analyzer does not need to unzip the bundle itself, thus reducing the usage of the
- Signature of
org.sonarsource.sonarlint.core.rpc.protocol.backend.file.DidUpdateFileSystemParams#DidUpdateFileSystemParamswas changed- Parameter
addedOrChangedFileswas split intoaddedFilesandchangedFiles
- Parameter
- Removed parameter
branchandpullRequestfromorg.sonarsource.sonarlint.core.rpc.protocol.client.issue.IssueDetailsDtoas it should not be used anymore by the client.
- Introduce a new method
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService.shouldUseEnterpriseCSharpAnalyzerto allow clients to know what kind of C# analyzer should be used for the analysis.- The method returns a boolean value indicating whether the enterprise C# analyzer should be used or not
- The method returns
trueif a binding exists for config scope AND the related connected server has the enterprise C# plugin (csharpenterprise) installed - The method returns
trueif binding exists with a SonarQube version < 10.8 (i.e. SQ versions that do not include repackaged dotnet analyzer) OR SonarCloud - The method returns
falsein standalone mode or if connected to non-commercial edition of SonarQube with a version >= 10.8
- Inject the relevant C# analyzer to analysis engines based on the above and share the path to the analyzer JAR as an analysis property for the OmniSharp plugin.
- Add two new constructor arguments to
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.OmnisharpRequirementsDtofor clients to declare the paths to the Open-Source and Enterprise C# analyzers.
- A new attribute
severityModehas been added toorg.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaisedFindingDtoandorg.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.TaintVulnerabilityDtothat automatically contains eitherStandardModeDetailsorMQRModeDetails- A new type
StandardModeDetailshas been introduced, which contains information about severity and type - A new type
MQRModeDetailshas been introduced, which contains information about clean code attribute and impacts - You should display the finding accordingly to the information contained by
severityMode
- A new type
- A new method
IssueRpcService#getEffectiveIssueDetailshas been added to the backend to allow clients to retrieve detailed information about an issue- The method accepts a configuration scope ID and an issue ID (UUID) as parameters
- The method returns a
GetEffectiveIssueDetailsResponseobject containing the detailed information about the issue - It is preferred to use this method instead of the
RulesRpcService#getEffectiveRuleDetailswhen retrieving rule description details in the context of a specific issue, as this new method will provide more precise information based on the issue, like issue impacts & customized issue severity
- Remove the
org.sonarsource.sonarlint.core.serverconnection.ServerPathProviderclass. - Remove
severityandtypefields fromorg.sonarsource.sonarlint.core.rpc.protocol.backend.rules.RuleDefinitionDtoas this class is only used for fetching standalone rule details, which should always have the Clean Code Attribute and Impacts
- The following attributes have been deprecated from
org.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaisedFindingDtoandorg.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.TaintVulnerabilityDto, you should now use the new attributeseverityModeseveritytypecleanCodeAttributeimpacts
- Add a new method to
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#matchProjectBranchallowing the backend to check whether the locally checked-out branch matches a requesting server branch
- Signature of
org.sonarsource.sonarlint.core.rpc.client.SonarLintRpcClientDelegate#raiseHotspotswas changed- Parameter
issuesByFileUrihas been rightfully replaced byhotspotsByFileUri - This is purely a naming change, there is no functional impact
- Parameter
- Add return value
GetForcedNodeJsResponsetoorg.sonarsource.sonarlint.core.rpc.client.SonarLintRpcClientDelegate#didChangeClientNodeJsPathindicating whether the Node.js path is effective or not. If that's the case, the path and the version will be returned.- It's not mandatory to use this return value. It is used by some IDEs to show the current Node.js version used.
- Add a new system property
sonarlint.debug.active.rulesto log active rules in verbose mode when triggering an analysis
- Signature of
org.sonarsource.sonarlint.core.rpc.client.SonarLintRpcClientDelegate#noBindingSuggestionFoundwas changed- Replaced parameter with
org.sonarsource.sonarlint.core.rpc.protocol.client.binding.NoBindingSuggestionFoundParams - Former parameter
projectKeycan now be accessed byparams.getProjectKey()
- Replaced parameter with
- Removed deprecated constructors from
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParams
- Add a field to
org.sonarsource.sonarlint.core.rpc.protocol.common.NoBindingSuggestionFoundParamsindicating whether the suggestion where no binding was found by is SonarCloud or not, can be used to display a more precise notification in the IDE rather than a generic one - Add a signature to
SloopLauncher.start, allowing clients to add custom JVM arguments to the start of the process
-
Add new
isUserDefinedparameter intoorg.sonarsource.sonarlint.core.rpc.protocol.common.ClientFileDto- User-defined files will be included in the analysis. Non-user-defined files such as generated or library files will be excluded from analysis when analysis is triggered by the backend. If the analysis was forced by the client, exclusions are not respected.
-
Introduce a new parameter in the constructor of
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.FeatureFlagsDto:canOpenFixSuggestion.- This flag lets clients completely disable the opening a fix suggestion in the IDE, which can be useful if the feature is not yet available in the client.
-
Introduce a new initialization parameter
TelemetryMigrationDtotoorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParams- The parameter is nullable and should be used only by the SLVS to migrate its telemetry. All other clients should provide
nullas a value.
- The parameter is nullable and should be used only by the SLVS to migrate its telemetry. All other clients should provide
-
Add a method to
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClientto allow the backend to request client-defined file exclusions from the client before every standalone analysis.org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#getFileExclusionsto request file exclusions
-
Add a field to
org.sonarsource.sonarlint.core.rpc.protocol.common.ClientFileDtoto allow the backend to distinguish non-user-defined files to exclude from analysis -
Add
showFixSuggestionmethod toorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient- It's only available when the feature flag
canOpenFixSuggestionis enabled - When using this method, you will receive a single fix suggestion for a specific issue that should be displayed to the user
- The user should have the possibility to accept or decline the fix suggestion
- The fix suggestion can be displayed at different locations in the file
- It's only available when the feature flag
-
Add
fixSuggestionResolvedmethod toorg.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcService- You should use this method whenever a fix suggestion has been accepted or declined
- If the fix has multiple changes (snippets), you should call the method once for each
- The
indexSnippetshould be filled if possible, it corresponds to the snippet index in the list of changes - If you do not know if the fix was accepted or declined at the snippet level, you should call the method once for the whole fix
- Add the
didOpenFileanddidCloseFilemethods toorg.sonarsource.sonarlint.core.rpc.protocol.backend.file.FileRpcService.- Clients are supposed to call these methods when a file is opened in the editor or closed.
- Add a new constructor in
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParamsto let clients provide if automatic analysis is enabled. - Add a new
didChangeAutomaticAnalysisSettingmethod inorg.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService- Clients are expected to call it whenever users change the "enable automatic analysis" setting.
- Add new methods to
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcServiceto force analysisanalyzeFullProjectforces analysis all files of the project that was provided to backend by methodorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#listFilesanalyzeFileListforces analysis for the provided set of filesanalyzeOpenFilesforces analysis of all files that were reported as opened usingorg.sonarsource.sonarlint.core.rpc.protocol.backend.file.FileRpcService#didOpenFileanalyzeVCSChangedFilesforces analysis of modified and not committed files
- Change
disabledLanguagesForAnalysisparameter oforg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParamsintroduced in 10.3 version todisabledPluginKeysForAnalysis- Analysis will be disabled for plugins specified in
disabledPluginKeysForAnalysisbut it will be still possible to consume Rule Descriptions - Can be null or empty if clients do not wish to disable analysis for any loaded plugin
- Analysis will be disabled for plugins specified in
- Add new
disabledLanguagesForAnalysisparameter intoorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParams- Analysis will be disabled for languages specified
disabledLanguagesForAnalysisbut it will be still possible to consume Rule Descriptions - Can be null or empty if clients do not wish to disable analysis for any loaded plugin
- Analysis will be disabled for languages specified
- Add a method to
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClientto allow backend to request inferred analysis properties from the client before every analysis. It's important because properties may change depending on files being analysed.org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient#getInferredAnalysisPropertiesto request inferred properties
- Add a method to the
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcServiceto let the client notify the backend with user defined analysis propertiesorg.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService#didSetUserAnalysisPropertiesto set user defined properties
- For analysis, both user-defined and inferred properties will be merged. If the same property is inferred by the client and provided by the user - the inferred value will be used for analysis.
- Add the
getConnectionParamsmethod toorg.sonarsource.sonarlint.core.rpc.protocol.client.connection.AssistCreatingConnectionParams- It allows clients to get parameters to create either SonarQube or SonarCloud connection
- This field type is
Either<AssistSonarQubeConnection, AssistSonarCloudConnection> - Common methods of both connection types are added to the
AssistCreatingConnectionParamsclass to provide users simplicity
-
Deprecate
isSonarCloudparameter fromorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.HelpGenerateUserTokenParams- This value on no longer needed on the backend side.
-
org.sonarsource.sonarlint.core.rpc.protocol.client.connection.AssistCreatingConnectionParams.getServerUrlis only meaningful for SQ connections. UsegetConnection().getLeft().getServerUrl()instead to get theserverUrlof a SQ connection -
The existing constructor in
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParamsis now deprecated, the newly added constructor should be used instead (see above).
org.sonarsource.sonarlint.core.rpc.client.SonarLintRpcClientDelegate#didDetectSecrethad noconfigScopeIdparameter, it was added
-
Add the
analyzeFilesAndTrackmethod toorg.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService.- It allows clients to submit files for analysis, let the backend deal with issue tracking, and will lead to a later notification via
raiseIssuesandraiseHotspots(see below). - Usages of
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService#analyzeFilesshould be replaced by this new method. - It accepts a
AnalyzeFilesAndTrackParamsobject instead of the deprecatedAnalyzeFilesParams. The extra flagshouldFetchServerIssuesshould be set totruewhen the analysis is triggered in response to a file open event. - When using this method, implementation of the
didRaiseIssuemethod oforg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClientis no longer required. The newraiseIssuesandraiseHotspotsmethods should be implemented instead (see below).
- It allows clients to submit files for analysis, let the backend deal with issue tracking, and will lead to a later notification via
-
Add
raiseIssuesmethod toorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClientto report tracked issues.- Will be called by the backend when issues should be raised to the user. The UI should be updated accordingly.
- The
org.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaiseIssuesParamsclass contains a list of issues to raise by file URI. - Each raised issue went through issue tracking, and has potentially been matched with a previously known issue and/or a server issue in connected mode.
- This new method reports a collection of issues replacing the ones previously raised. Every call contains the full list of known issues.
-
Add
raiseHotspotsmethod toorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClientto report tracked Security Hotspots.- Will be called by the backend when hotspots should be raised to the user. The UI should be updated accordingly.
- The
org.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaiseHotspotsParamsclass contains a list of hotspots to raise by file URI. - Each raised hotspot went through hotspot tracking, and has potentially been matched with a previously known hotspot and/or a server hotspot in connected mode.
- This new method reports a collection of hotspots replacing the ones previously raised. Every call contains the full list of known hotspots.
-
Add
getRawIssuesmethod toorg.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalyzeFilesResponse- It allows clients to get raised issues in the analysis response.
- This method is temporarily added and will be removed when the deprecated APIs have been dropped.
org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService#analyzeFilesand the underlying DTOs are deprecated, should be replaced byanalyzeFilesAndTrack.- As a consequence,
org.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.didRaiseIssueand the underlying DTOs are now deprecated. It should be replaced byorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.raiseIssuesandorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.raiseHotspots. org.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.IssueTrackingRpcServiceand the underlying DTOs are deprecated, the functionality is now handled byanalyzeFilesAndTrack.org.sonarsource.sonarlint.core.rpc.protocol.backend.tracking.SecurityHotspotMatchingRpcServiceand the underlying DTOs are deprecated, the functionality is now handled byanalyzeFilesAndTrack.org.sonarsource.sonarlint.core.client.legacy.analysis.SonarLintAnalysisEngineand all classes from thesonarlint-java-client-legacymodule are now deprecated. Analysis should happen viaorg.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService#analyzeFilesAndTrack, and thesonarlint-java-client-legacyartifact will soon be removed.- The
pidparameter of theorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.ClientConstantInfoDtoconstructor is not used anymore (the backend PID is used instead). The constructor is now deprecated, and a new constructor without this parameter was introduced and should be used. Theorg.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.ClientConstantInfoDto.getPidmethod is not used anymore and also deprecated.
-
Replace the last constructor parameter of
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.InitializeParams.- Clients should provide an instance of
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.LanguageSpecificRequirements. - The previous Node.js path parameter is now part of this new
LanguageSpecificRequirements, together with configuration related to Omnisharp. - For clients not executing analysis via the backend, or not supporting C#, a
nullvalue can be passes as the 2nd parameter of theLanguageSpecificRequirementsconstructor
- Clients should provide an instance of
-
Introduce a new parameter in the constructor of
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.ClientConstantInfoDto.- Clients should provide the PID of the host process.
- For clients not executing analysis via the backend, this parameter is not used, so a dummy value can be provided.
-
Introduce a new parameter in the constructor of
org.sonarsource.sonarlint.core.rpc.protocol.backend.initialize.FeatureFlagsDto:enableTelemetry.- This flag lets clients completely disable the telemetry, which can be useful when using Sloop in the context of tests.
- The flag replaces the
sonarlint.telemetry.disabledsystem property. - For clients that want to keep the same behavior, they can read the system property on the client side and pass it to the
FeatureFlagsDtoconstructor.
-
Stop leaking LSP4J types in API (SLCORE-663) and wrap them in SonarLint classes instead
org.eclipse.lsp4j.jsonrpc.messages.Eitherreplaced byorg.sonarsource.sonarlint.core.rpc.protocol.common.Eitherorg.eclipse.lsp4j.jsonrpc.CancelCheckerreplaced byorg.sonarsource.sonarlint.core.rpc.client.SonarLintCancelChecker
-
Add new client method
org.sonarsource.sonarlint.core.rpc.client.SonarLintRpcClientDelegate#suggestConnection.- This method is used when binding settings are found for an unknown connection.
- Clients are expected to notify users about these.
-
Move class
org.sonarsource.sonarlint.core.rpc.protocol.backend.usertoken.RevokeTokenParamstoorg.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.RevokeTokenParams. -
Introduce a new parameter in the constructor of
org.sonarsource.sonarlint.core.rpc.protocol.common.ClientFileDto.- Clients can provide a detected language for the file. This is the opportunity to rely on the IDE's detected type.
- This is used for analysis, clients can pass
nullto keep the same behavior as before, or if no language was detected.
-
Add methods to
org.sonarsource.sonarlint.core.rpc.protocol.backend.telemetry.TelemetryRpcServiceto track binding creation.addedManualBindingsshould be called by clients when a new binding is created manually.addedImportedBindingsshould be called by clients when a binding is created from a shared connected mode configuration file.addedAutomaticBindingsshould be called by clients when a binding is created using a suggestion from a server analysis settings files.
-
Add
isFromSharedConfigurationfield toorg.sonarsource.sonarlint.core.rpc.protocol.client.binding.AssistBindingParamsandorg.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.BindingSuggestionDto.- This field tells the client whether the binding suggestion comes from a shared connected mode configuration file (
true) or from analysis settings files (false).
- This field tells the client whether the binding suggestion comes from a shared connected mode configuration file (
-
Add the
analyzeFilesmethod inorg.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.AnalysisRpcService.- Clients can use this method to trigger an analysis. It's a request, so they can get a response with details about the analysis.
- They need to pass the list of URIs representing files to analyze.
- They also need to pass an "analysis ID", which is a unique ID used for correlating the analysis and issues that are raised via
didRaiseIssue(see below).
-
Add the
didRaiseIssuemethod inorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.- This lets clients be informed when an issue is detected during analysis.
- They can do local tracking or stream the issue to the users.
- They can retrieve which analysis lead to this issue being raised with the "analysis ID" correlation ID.
-
Add the
didSkipLoadingPluginmethod inorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.- This is called after an analysis when a plugin was not loaded.
- Clients are expected to notify users about these.
-
Add the
didDetectSecretmethod inorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.- This is called after an analysis when a secret was detected in one of the analyzed files.
- Clients are expected to notify users about these.
- The backend does not keep track of any notification regarding secrets detection. Clients will need to manage some cache to avoid notifying users too often.
-
Add the
promoteExtraEnabledLanguagesInConnectedModemethod inorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.- This is called after an analysis in standalone mode when a language enabled only in connected mode was detected.
- Clients are expected to notify users about these.
- The backend does not keep track of any notification regarding this promotion. Clients will need to manage some cache to avoid notifying users too often.
-
Add the
getBaseDirmethod inorg.sonarsource.sonarlint.core.rpc.protocol.SonarLintRpcClient.- This is called during an analysis to determine the base directory for the files being analyzed.
- Clients are expected to implement this request if they support analysis via the backend.