aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/build.gradle2
-rw-r--r--sonar-core/src/it/java/org/sonar/core/util/DefaultHttpDownloaderIT.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/ce/CeTaskCharacteristics.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/ce/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/component/ComponentKeys.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/component/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/AiCodeFixEnablementConstants.java6
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/AiCodefixPropertyDefinitions.java47
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/ComputeEngineProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/CorePropertyDefinitions.java3
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/DebtProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/ExclusionProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/Frequency.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/IssueExclusionProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/Logback.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/MQRModeConstants.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/MQRModeProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/MaxTokenLifetimeOption.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/ProxyProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/PurgeConstants.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/PurgeProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/ScannerProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/SvnProperties.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/TokenExpirationConstants.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/WebConstants.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/documentation/DefaultDocumentationLinkGenerator.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/documentation/DocumentationBaseLinkProvider.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/documentation/DocumentationLinkGenerator.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProvider.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/documentation/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepository.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepositoryImpl.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java8
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsLoader.java10
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/PluginRiskConsent.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/ServiceLoaderWrapper.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/fips/FipsDetector.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/fips/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/hash/LineRange.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/hash/SourceHashComputer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/hash/SourceLineHashesComputer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/hash/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/i18n/DefaultI18n.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/i18n/DurationLabel.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/i18n/I18n.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/i18n/I18nClassloader.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/i18n/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/AnticipatedTransition.java8
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/DefaultImpact.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java46
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueComment.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/FieldDiffs.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/IssueChangeContext.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/AbstractTracker.java32
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/AnticipatedTransitionTracker.java5
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockHashSequence.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/FilteringBaseInputWrapper.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/Input.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/LazyInput.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/LineHashSequence.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/NonClosedTracking.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/SimpleTracker.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/Trackable.java5
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracker.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracking.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/tracking/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/language/LanguagesProvider.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/language/UnanalyzedLanguages.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/language/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/metric/SoftwareQualitiesMetrics.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/metric/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ClassDerivedBeanDefinition.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ComponentKeys.java6
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/Container.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ContainerPopulator.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/EditionProvider.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ExplodedPlugin.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/LazyStrategy.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/LazyUnlessStartableStrategy.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/Module.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PlatformEditionProvider.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoader.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoaderDef.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginClassloaderFactory.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginJarExploder.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginRepository.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PriorityBeanFactory.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/RemotePluginFile.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ServerId.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/SonarQubeVersion.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java5
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/SpringInitStrategy.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/StartableBeanPostProcessor.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/StartableContainer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/plugin/PluginType.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/plugin/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/ImpactFormatter.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/ImpactSeverityMapper.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/RuleType.java77
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/RuleTypeMapper.java46
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/sarif/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/scadata/DefaultScaDataSourceImpl.java41
-rw-r--r--sonar-core/src/main/java/org/sonar/core/scadata/ScaDataSource.java33
-rw-r--r--sonar-core/src/main/java/org/sonar/core/scadata/package-info.java20
-rw-r--r--sonar-core/src/main/java/org/sonar/core/telemetry/TelemetryExtension.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/telemetry/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/user/DefaultUser.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/user/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/CloseableIterator.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/ContextException.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/DefaultHttpDownloader.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/FileUtils.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/LineReaderIterator.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/NonNullInputFunction.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/ParamChange.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/ProcessWrapperFactory.java147
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/ProgressLogger.java8
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/Protobuf.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/ProtobufJsonFormat.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/ResourceUtils.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/SequenceUuidFactory.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/SettingFormatter.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/Slug.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/UtcDateUtils.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/UuidFactory.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/UuidFactoryFast.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/UuidFactoryImpl.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/Uuids.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/issue/Issue.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/issue/IssueChangedEvent.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/issue/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/logs/DefaultProfiler.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/logs/NullProfiler.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/logs/Profiler.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/logs/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/rule/RuleChange.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/rule/RuleSetChangedEvent.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/rule/package-info.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/stream/package-info.java2
-rw-r--r--sonar-core/src/main/resources/org/sonar/l10n/core.properties7
-rw-r--r--sonar-core/src/test/java/com/sonarsource/plugins/license/api/FooBar.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/component/ComponentKeysSanitizationTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/component/ComponentKeysTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/config/MQRModePropertiesTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/config/MaxTokenLifetimeOptionTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/config/PurgePropertiesTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/config/SecurityPropertiesTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/documentation/DefaultDocumentationLinkGeneratorTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProviderTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionRepositoryImplTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsInstallerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsLoaderTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/fips/FipsDetectorTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/hash/LineRangeTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/hash/SourceHashComputerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/hash/SourceLinesHashesComputerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/i18n/DefaultI18nTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/i18n/DurationLabelTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/i18n/I18nClassloaderTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/AnticipatedTransitionTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/FieldDiffsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/IssueChangeContextTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/tracking/AbstractTrackerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/tracking/AnticipatedTransitionTrackerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockHashSequenceTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockRecognizerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/tracking/TrackerTest.java44
-rw-r--r--sonar-core/src/test/java/org/sonar/core/language/LanguagesProviderTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/language/UnanalyzedLanguagesTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/metric/SoftwareQualitiesMetricsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/ComponentKeysTest.java7
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/LazyUnlessStartableStrategyTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/ModuleTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PlatformEditionProviderTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderDefTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PluginClassloaderFactoryTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PluginJarExploderTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PriorityBeanFactoryTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/ServerIdTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/SonarQubeVersionTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/StartableBeanPostProcessorTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/rule/ImpactFormatterTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/rule/ImpactSeverityMapperTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/rule/RuleTypeMapperTest.java44
-rw-r--r--sonar-core/src/test/java/org/sonar/core/rule/RuleTypeTest.java70
-rw-r--r--sonar-core/src/test/java/org/sonar/core/sarif/Sarif210SerializationDeserializationTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerImplTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/scadata/DefaultScaDataSourceImplTest.java48
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/CloseableIteratorTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/ContextExceptionTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/FileUtilsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/LineReaderIteratorTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/NonNullInputFunctionTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/ProcessWrapperFactoryTest.java139
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/ProgressLoggerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/ProtobufJsonFormatTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/ResourceUtilsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/SequenceUuidFactoryTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/SettingFormatterTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/SlugTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/UtcDateUtilsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/UuidFactoryFastTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/UuidFactoryImplTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/UuidsTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/issue/IssueChangedEventTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/issue/IssueTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/logs/DefaultProfilerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/logs/NullProfilerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/logs/ProfilerTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/rule/RuleChangeTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/rule/RuleSetChangedEventTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java2
239 files changed, 984 insertions, 354 deletions
diff --git a/sonar-core/build.gradle b/sonar-core/build.gradle
index df61f1b8825..8406f2f1e08 100644
--- a/sonar-core/build.gradle
+++ b/sonar-core/build.gradle
@@ -23,6 +23,8 @@ dependencies {
compileOnlyApi 'com.github.spotbugs:spotbugs-annotations'
compileOnlyApi 'com.google.code.gson:gson'
+ implementation 'org.apache.commons:commons-exec'
+
testImplementation 'com.tngtech.java:junit-dataprovider'
testImplementation 'junit:junit'
testImplementation 'org.assertj:assertj-core'
diff --git a/sonar-core/src/it/java/org/sonar/core/util/DefaultHttpDownloaderIT.java b/sonar-core/src/it/java/org/sonar/core/util/DefaultHttpDownloaderIT.java
index cbab2fd1955..0045b7e884e 100644
--- a/sonar-core/src/it/java/org/sonar/core/util/DefaultHttpDownloaderIT.java
+++ b/sonar-core/src/it/java/org/sonar/core/util/DefaultHttpDownloaderIT.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/ce/CeTaskCharacteristics.java b/sonar-core/src/main/java/org/sonar/core/ce/CeTaskCharacteristics.java
index fc47210eb99..18028ef4545 100644
--- a/sonar-core/src/main/java/org/sonar/core/ce/CeTaskCharacteristics.java
+++ b/sonar-core/src/main/java/org/sonar/core/ce/CeTaskCharacteristics.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/ce/package-info.java b/sonar-core/src/main/java/org/sonar/core/ce/package-info.java
index 032879f3c96..e467e84ffe2 100644
--- a/sonar-core/src/main/java/org/sonar/core/ce/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/ce/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/component/ComponentKeys.java b/sonar-core/src/main/java/org/sonar/core/component/ComponentKeys.java
index a37697ce133..3e4824d72be 100644
--- a/sonar-core/src/main/java/org/sonar/core/component/ComponentKeys.java
+++ b/sonar-core/src/main/java/org/sonar/core/component/ComponentKeys.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/component/package-info.java b/sonar-core/src/main/java/org/sonar/core/component/package-info.java
index 9be2d1c8e4a..b228f1f333e 100644
--- a/sonar-core/src/main/java/org/sonar/core/component/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/component/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/AiCodeFixEnablementConstants.java b/sonar-core/src/main/java/org/sonar/core/config/AiCodeFixEnablementConstants.java
index 6e4ee5ca133..fb7fa85a72c 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/AiCodeFixEnablementConstants.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/AiCodeFixEnablementConstants.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -21,6 +21,10 @@ package org.sonar.core.config;
public final class AiCodeFixEnablementConstants {
public static final String SUGGESTION_FEATURE_ENABLED_PROPERTY = "sonar.ai.suggestions.enabled";
+ public static final String SUGGESTION_PROVIDER_KEY_PROPERTY = "sonar.ai.suggestions.provider.key";
+ public static final String SUGGESTION_PROVIDER_MODEL_KEY_PROPERTY = "sonar.ai.suggestions.provider.modelKey";
+ public static final String SUGGESTION_PROVIDER_ENDPOINT_PROPERTY = "sonar.ai.suggestions.provider.endpoint";
+ public static final String SUGGESTION_PROVIDER_API_KEY_INTERNAL_PROPERTY = "sonar.ai.suggestions.provider.apiKey";
private AiCodeFixEnablementConstants() {
}
diff --git a/sonar-core/src/main/java/org/sonar/core/config/AiCodefixPropertyDefinitions.java b/sonar-core/src/main/java/org/sonar/core/config/AiCodefixPropertyDefinitions.java
new file mode 100644
index 00000000000..328cfb94813
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/core/config/AiCodefixPropertyDefinitions.java
@@ -0,0 +1,47 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.config;
+
+import java.util.List;
+import org.sonar.api.PropertyType;
+import org.sonar.api.config.PropertyDefinition;
+
+import static org.sonar.api.config.PropertyDefinition.builder;
+
+public class AiCodefixPropertyDefinitions {
+ public static final String PROP_AI_CODEFIX_HIDDEN = "sonar.ai.codefix.hidden";
+ public static final String AI_CODE_CATEGORY = "ai_codefix";
+
+ private AiCodefixPropertyDefinitions() {
+ // only static stuff
+ }
+
+ public static List<PropertyDefinition> all() {
+ return List.of(
+ builder(PROP_AI_CODEFIX_HIDDEN)
+ .name("AI Codefix feature hidden")
+ .description("Defines if the AI Codefix feature should be hidden across the product, including its marketing content.")
+ .type(PropertyType.BOOLEAN)
+ .hidden()
+ .category(AI_CODE_CATEGORY)
+ .defaultValue(Boolean.toString(false))
+ .build());
+ }
+}
diff --git a/sonar-core/src/main/java/org/sonar/core/config/ComputeEngineProperties.java b/sonar-core/src/main/java/org/sonar/core/config/ComputeEngineProperties.java
index 0f9c85e99d7..55b5324ea4d 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/ComputeEngineProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/ComputeEngineProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/CorePropertyDefinitions.java b/sonar-core/src/main/java/org/sonar/core/config/CorePropertyDefinitions.java
index 3740ea7b0c7..beb314cae1e 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/CorePropertyDefinitions.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/CorePropertyDefinitions.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -66,6 +66,7 @@ public class CorePropertyDefinitions {
defs.addAll(PurgeProperties.all());
defs.addAll(ScannerProperties.all());
defs.addAll(MQRModeProperties.all());
+ defs.addAll(AiCodefixPropertyDefinitions.all());
defs.addAll(asList(
PropertyDefinition.builder(CoreProperties.MODULE_LEVEL_ARCHIVED_SETTINGS)
diff --git a/sonar-core/src/main/java/org/sonar/core/config/DebtProperties.java b/sonar-core/src/main/java/org/sonar/core/config/DebtProperties.java
index b1efbfade58..73b2ef78732 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/DebtProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/DebtProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/ExclusionProperties.java b/sonar-core/src/main/java/org/sonar/core/config/ExclusionProperties.java
index 248d64e4f6a..317490350bd 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/ExclusionProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/ExclusionProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/Frequency.java b/sonar-core/src/main/java/org/sonar/core/config/Frequency.java
index bdf34959bb1..4385922bf3a 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/Frequency.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/Frequency.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/IssueExclusionProperties.java b/sonar-core/src/main/java/org/sonar/core/config/IssueExclusionProperties.java
index c77ea4fbf3e..56067bdda81 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/IssueExclusionProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/IssueExclusionProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/Logback.java b/sonar-core/src/main/java/org/sonar/core/config/Logback.java
index 593bc6079a5..29fc6566d65 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/Logback.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/Logback.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/MQRModeConstants.java b/sonar-core/src/main/java/org/sonar/core/config/MQRModeConstants.java
index 20d36c2ea5b..2b3b366dd5d 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/MQRModeConstants.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/MQRModeConstants.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/MQRModeProperties.java b/sonar-core/src/main/java/org/sonar/core/config/MQRModeProperties.java
index b5ef02e42e9..4167ff508d9 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/MQRModeProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/MQRModeProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/MaxTokenLifetimeOption.java b/sonar-core/src/main/java/org/sonar/core/config/MaxTokenLifetimeOption.java
index d0a05b52c4d..20e9c7df6e7 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/MaxTokenLifetimeOption.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/MaxTokenLifetimeOption.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/ProxyProperties.java b/sonar-core/src/main/java/org/sonar/core/config/ProxyProperties.java
index e5eb089bc99..c07943826fc 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/ProxyProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/ProxyProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/PurgeConstants.java b/sonar-core/src/main/java/org/sonar/core/config/PurgeConstants.java
index 4a8c9a671d8..60edf16a1ce 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/PurgeConstants.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/PurgeConstants.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/PurgeProperties.java b/sonar-core/src/main/java/org/sonar/core/config/PurgeProperties.java
index 255f8fbbc8f..e2005b2ff8d 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/PurgeProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/PurgeProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/ScannerProperties.java b/sonar-core/src/main/java/org/sonar/core/config/ScannerProperties.java
index b1c68acb353..22e7bd5346c 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/ScannerProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/ScannerProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java b/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java
index 5b564817384..061f8bf563a 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/SvnProperties.java b/sonar-core/src/main/java/org/sonar/core/config/SvnProperties.java
index 04e11a1f265..0598ff959d5 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/SvnProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/SvnProperties.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/TokenExpirationConstants.java b/sonar-core/src/main/java/org/sonar/core/config/TokenExpirationConstants.java
index 07dc9eb7b66..aaa711648b7 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/TokenExpirationConstants.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/TokenExpirationConstants.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/WebConstants.java b/sonar-core/src/main/java/org/sonar/core/config/WebConstants.java
index 96aa913365e..a363456c837 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/WebConstants.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/WebConstants.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/config/package-info.java b/sonar-core/src/main/java/org/sonar/core/config/package-info.java
index f0c908c8116..30bc737f935 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/documentation/DefaultDocumentationLinkGenerator.java b/sonar-core/src/main/java/org/sonar/core/documentation/DefaultDocumentationLinkGenerator.java
index b499c6406f4..015b8780a35 100644
--- a/sonar-core/src/main/java/org/sonar/core/documentation/DefaultDocumentationLinkGenerator.java
+++ b/sonar-core/src/main/java/org/sonar/core/documentation/DefaultDocumentationLinkGenerator.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationBaseLinkProvider.java b/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationBaseLinkProvider.java
index e1f18289f84..b26fac5cd9c 100644
--- a/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationBaseLinkProvider.java
+++ b/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationBaseLinkProvider.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationLinkGenerator.java b/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationLinkGenerator.java
index aad1593af15..35c5caf1d80 100644
--- a/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationLinkGenerator.java
+++ b/sonar-core/src/main/java/org/sonar/core/documentation/DocumentationLinkGenerator.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProvider.java b/sonar-core/src/main/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProvider.java
index 4b6b3271c86..302d45465be 100644
--- a/sonar-core/src/main/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProvider.java
+++ b/sonar-core/src/main/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProvider.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/documentation/package-info.java b/sonar-core/src/main/java/org/sonar/core/documentation/package-info.java
index cbe06c6281b..000f2d7ca4a 100644
--- a/sonar-core/src/main/java/org/sonar/core/documentation/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/documentation/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java
index 7d7e868697a..cce494d4149 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepository.java b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepository.java
index 78f9b13ee78..adee45c65d2 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepository.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepository.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepositoryImpl.java b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepositoryImpl.java
index bdbaf6f486b..95e2f502ed2 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepositoryImpl.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionRepositoryImpl.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java
index cbd04f866a2..10640cab072 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -24,12 +24,12 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Optional;
import java.util.function.Predicate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.sonar.api.SonarRuntime;
import org.sonar.api.config.Configuration;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.utils.AnnotationUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.sonar.core.platform.ExtensionContainer;
import static java.util.Objects.requireNonNull;
@@ -72,7 +72,7 @@ public abstract class CoreExtensionsInstaller {
try {
addDeclaredExtensions(container, extensionFilter, additionalSideFilter, coreExtension);
- LOG.debug("Installed core extension: " + coreExtensionName);
+ LOG.debug("Installed core extension: {}", coreExtensionName);
coreExtensionRepository.installed(coreExtension);
} catch (Exception e) {
throw new RuntimeException("Failed to load core extension " + coreExtensionName, e);
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsLoader.java b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsLoader.java
index 1dfdcb96604..3265e3998f2 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsLoader.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsLoader.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -19,10 +19,10 @@
*/
package org.sonar.core.extension;
+import jakarta.inject.Inject;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
-import jakarta.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,7 +53,9 @@ public class CoreExtensionsLoader {
coreExtensionRepository.setLoadedCoreExtensions(coreExtensions);
if (!coreExtensions.isEmpty()) {
- LOG.info("Loaded core extensions: {}", coreExtensions.stream().map(CoreExtension::getName).collect(Collectors.joining(", ")));
+ LOG.atInfo()
+ .addArgument(coreExtensions.stream().map(CoreExtension::getName).collect(Collectors.joining(", ")))
+ .log("Loaded core extensions: {}");
}
}
@@ -67,6 +69,6 @@ public class CoreExtensionsLoader {
.collect(Collectors.toSet());
checkState(duplicatedNames.isEmpty(),
"Multiple core extensions declare the following names: %s",
- duplicatedNames.stream().sorted().collect(Collectors.joining(", ")));
+ duplicatedNames.isEmpty() ? "" : duplicatedNames.stream().sorted().collect(Collectors.joining(", ")));
}
}
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java
index a9f36c9d857..37ddd54a53b 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java
index 07cd6344971..394a14c5e5c 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/PluginRiskConsent.java b/sonar-core/src/main/java/org/sonar/core/extension/PluginRiskConsent.java
index 109b3c29ef7..d023bca7320 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/PluginRiskConsent.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/PluginRiskConsent.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/ServiceLoaderWrapper.java b/sonar-core/src/main/java/org/sonar/core/extension/ServiceLoaderWrapper.java
index 6ee72caa185..04de4fce61e 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/ServiceLoaderWrapper.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/ServiceLoaderWrapper.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/package-info.java b/sonar-core/src/main/java/org/sonar/core/extension/package-info.java
index 823d7ee04bc..e22795a82cd 100644
--- a/sonar-core/src/main/java/org/sonar/core/extension/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/extension/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/fips/FipsDetector.java b/sonar-core/src/main/java/org/sonar/core/fips/FipsDetector.java
index d619fffa55d..30af63dc73a 100644
--- a/sonar-core/src/main/java/org/sonar/core/fips/FipsDetector.java
+++ b/sonar-core/src/main/java/org/sonar/core/fips/FipsDetector.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/fips/package-info.java b/sonar-core/src/main/java/org/sonar/core/fips/package-info.java
index 1d1de452d39..d35b88f01cb 100644
--- a/sonar-core/src/main/java/org/sonar/core/fips/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/fips/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/hash/LineRange.java b/sonar-core/src/main/java/org/sonar/core/hash/LineRange.java
index cb843fb7c0c..ed15e87a93b 100644
--- a/sonar-core/src/main/java/org/sonar/core/hash/LineRange.java
+++ b/sonar-core/src/main/java/org/sonar/core/hash/LineRange.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/hash/SourceHashComputer.java b/sonar-core/src/main/java/org/sonar/core/hash/SourceHashComputer.java
index 4ecbd788a79..ac7b71d9ddb 100644
--- a/sonar-core/src/main/java/org/sonar/core/hash/SourceHashComputer.java
+++ b/sonar-core/src/main/java/org/sonar/core/hash/SourceHashComputer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/hash/SourceLineHashesComputer.java b/sonar-core/src/main/java/org/sonar/core/hash/SourceLineHashesComputer.java
index 9a149dc1dd1..76536e409f6 100644
--- a/sonar-core/src/main/java/org/sonar/core/hash/SourceLineHashesComputer.java
+++ b/sonar-core/src/main/java/org/sonar/core/hash/SourceLineHashesComputer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/hash/package-info.java b/sonar-core/src/main/java/org/sonar/core/hash/package-info.java
index 89e44b9cf65..5c9fbb46f93 100644
--- a/sonar-core/src/main/java/org/sonar/core/hash/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/hash/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/i18n/DefaultI18n.java b/sonar-core/src/main/java/org/sonar/core/i18n/DefaultI18n.java
index ebc4c560b54..69e5ac9b1ac 100644
--- a/sonar-core/src/main/java/org/sonar/core/i18n/DefaultI18n.java
+++ b/sonar-core/src/main/java/org/sonar/core/i18n/DefaultI18n.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/i18n/DurationLabel.java b/sonar-core/src/main/java/org/sonar/core/i18n/DurationLabel.java
index 7a7e6f4b349..95b64697078 100644
--- a/sonar-core/src/main/java/org/sonar/core/i18n/DurationLabel.java
+++ b/sonar-core/src/main/java/org/sonar/core/i18n/DurationLabel.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/i18n/I18n.java b/sonar-core/src/main/java/org/sonar/core/i18n/I18n.java
index 1e3991281e5..77624402c4d 100644
--- a/sonar-core/src/main/java/org/sonar/core/i18n/I18n.java
+++ b/sonar-core/src/main/java/org/sonar/core/i18n/I18n.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/i18n/I18nClassloader.java b/sonar-core/src/main/java/org/sonar/core/i18n/I18nClassloader.java
index dd4352835ea..d51cf204060 100644
--- a/sonar-core/src/main/java/org/sonar/core/i18n/I18nClassloader.java
+++ b/sonar-core/src/main/java/org/sonar/core/i18n/I18nClassloader.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/i18n/package-info.java b/sonar-core/src/main/java/org/sonar/core/i18n/package-info.java
index ed195753396..e053c9cf32b 100644
--- a/sonar-core/src/main/java/org/sonar/core/i18n/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/i18n/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/AnticipatedTransition.java b/sonar-core/src/main/java/org/sonar/core/issue/AnticipatedTransition.java
index 50c91c18134..244dfb86943 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/AnticipatedTransition.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/AnticipatedTransition.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -119,12 +119,6 @@ public class AnticipatedTransition implements Trackable {
return Date.from(Instant.now());
}
- @Nullable
- @Override
- public String getCveId() {
- return null;
- }
-
@Override
public boolean equals(Object o) {
if (this == o) {
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/DefaultImpact.java b/sonar-core/src/main/java/org/sonar/core/issue/DefaultImpact.java
index 36ea21eca93..5ccf987e8d2 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/DefaultImpact.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/DefaultImpact.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java
index dc4fb271e3d..c8e1a7fa4a8 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -28,7 +28,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -48,13 +47,13 @@ import org.sonar.api.issue.impact.SoftwareQuality;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.Severity;
import org.sonar.api.rules.CleanCodeAttribute;
-import org.sonar.api.rules.RuleType;
import org.sonar.api.utils.Duration;
import org.sonar.core.issue.tracking.Trackable;
+import org.sonar.core.rule.RuleType;
import static org.sonar.api.utils.DateUtils.truncateToSeconds;
-public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.Issue {
+public class DefaultIssue implements Issue, Trackable {
private String key = null;
private RuleType type = null;
@@ -141,8 +140,6 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
private final Map<SoftwareQuality, DefaultImpact> impacts = new LinkedHashMap<>();
private CleanCodeAttribute cleanCodeAttribute = null;
- private String cveId = null;
-
@Override
public String key() {
return key;
@@ -153,12 +150,10 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
return this;
}
- @Override
public RuleType type() {
return type;
}
- @Override
public Map<SoftwareQuality, org.sonar.api.issue.impact.Severity> impacts() {
return impacts.values().stream().collect(Collectors.toMap(DefaultImpact::softwareQuality, DefaultImpact::severity));
}
@@ -358,7 +353,6 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
}
@Nullable
- @Override
public IssueStatus issueStatus() {
return IssueStatus.of(status, resolution);
}
@@ -374,6 +368,10 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
return this;
}
+ public boolean isUnresolved() {
+ return resolution == null;
+ }
+
@Override
@CheckForNull
public String assignee() {
@@ -519,25 +517,6 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
return this;
}
- /**
- * @deprecated since 9.4, attribute was already not returning any element since 5.2
- */
- @Deprecated
- @Override
- @CheckForNull
- public String attribute(String key) {
- return null;
- }
-
- /**
- * @deprecated since 9.4, attribute was already not returning any element since 5.2
- */
- @Deprecated
- @Override
- public Map<String, String> attributes() {
- return new HashMap<>();
- }
-
@Override
@CheckForNull
public String authorLogin() {
@@ -783,15 +762,4 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
public Date getUpdateDate() {
return updateDate;
}
-
- @Override
- @CheckForNull
- public String getCveId() {
- return cveId;
- }
-
- public DefaultIssue setCveId(@Nullable String cveId) {
- this.cveId = cveId;
- return this;
- }
}
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueComment.java b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueComment.java
index ec253c71268..7c1fc33f57c 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueComment.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueComment.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/FieldDiffs.java b/sonar-core/src/main/java/org/sonar/core/issue/FieldDiffs.java
index 5d17343f234..5d82d5fcc9f 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/FieldDiffs.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/FieldDiffs.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/IssueChangeContext.java b/sonar-core/src/main/java/org/sonar/core/issue/IssueChangeContext.java
index 07348eb497e..e8099a422e0 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/IssueChangeContext.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/IssueChangeContext.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/package-info.java b/sonar-core/src/main/java/org/sonar/core/issue/package-info.java
index e7201e40f41..ee5a898a4eb 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/AbstractTracker.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/AbstractTracker.java
index 1c1e9394f48..56543b8eb52 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/AbstractTracker.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/AbstractTracker.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -61,13 +61,11 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
private final RuleKey ruleKey;
private final String lineHash;
private final Integer line;
- private final String cveId;
protected LineAndLineHashKey(Trackable trackable) {
this.ruleKey = trackable.getRuleKey();
this.line = trackable.getLine();
this.lineHash = Objects.toString(trackable.getLineHash(), "");
- this.cveId = trackable.getCveId();
}
@Override
@@ -83,12 +81,12 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
return Objects.equals(line, that.line)
&& lineHash.equals(that.lineHash)
&& ruleKey.equals(that.ruleKey)
- && Objects.equals(cveId, that.cveId);
+ ;
}
@Override
public int hashCode() {
- return Objects.hash(ruleKey, lineHash, line != null ? line : 0, cveId);
+ return Objects.hash(ruleKey, lineHash, line != null ? line : 0);
}
}
@@ -97,14 +95,12 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
private final String lineHash;
private final String message;
private final Integer line;
- private final String cveId;
protected LineAndLineHashAndMessage(Trackable trackable) {
this.ruleKey = trackable.getRuleKey();
this.line = trackable.getLine();
this.message = trackable.getMessage();
this.lineHash = Objects.toString(trackable.getLineHash(), "");
- this.cveId = trackable.getCveId();
}
@Override
@@ -121,12 +117,12 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
&& lineHash.equals(that.lineHash)
&& Objects.equals(message, that.message)
&& ruleKey.equals(that.ruleKey)
- && Objects.equals(cveId, that.cveId);
+ ;
}
@Override
public int hashCode() {
- return Objects.hash(ruleKey, lineHash, message, line != null ? line : 0, cveId);
+ return Objects.hash(ruleKey, lineHash, message, line != null ? line : 0);
}
}
@@ -134,13 +130,11 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
private final RuleKey ruleKey;
private final String message;
private final String lineHash;
- private final String cveId;
LineHashAndMessageKey(Trackable trackable) {
this.ruleKey = trackable.getRuleKey();
this.message = trackable.getMessage();
this.lineHash = Objects.toString(trackable.getLineHash(), "");
- this.cveId = trackable.getCveId();
}
@Override
@@ -156,12 +150,12 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
return lineHash.equals(that.lineHash)
&& Objects.equals(message, that.message)
&& ruleKey.equals(that.ruleKey)
- && Objects.equals(cveId, that.cveId);
+ ;
}
@Override
public int hashCode() {
- return Objects.hash(ruleKey, message, lineHash, cveId);
+ return Objects.hash(ruleKey, message, lineHash);
}
}
@@ -169,13 +163,11 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
private final RuleKey ruleKey;
private final String message;
private final Integer line;
- private final String cveId;
LineAndMessageKey(Trackable trackable) {
this.ruleKey = trackable.getRuleKey();
this.message = trackable.getMessage();
this.line = trackable.getLine();
- this.cveId = trackable.getCveId();
}
@Override
@@ -191,7 +183,7 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
return Objects.equals(line, that.line)
&& Objects.equals(message, that.message)
&& ruleKey.equals(that.ruleKey)
- && Objects.equals(cveId, that.cveId);
+ ;
}
@Override
@@ -203,12 +195,10 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
protected static class LineHashKey implements SearchKey {
private final RuleKey ruleKey;
private final String lineHash;
- private final String cveId;
LineHashKey(Trackable trackable) {
this.ruleKey = trackable.getRuleKey();
this.lineHash = Objects.toString(trackable.getLineHash(), "");
- this.cveId = trackable.getCveId();
}
@Override
@@ -221,12 +211,14 @@ public class AbstractTracker<RAW extends Trackable, BASE extends Trackable> {
}
LineHashKey that = (LineHashKey) o;
// start with most discriminant field
- return lineHash.equals(that.lineHash) && ruleKey.equals(that.ruleKey) && Objects.equals(cveId, that.cveId);
+ return lineHash.equals(that.lineHash)
+ && ruleKey.equals(that.ruleKey)
+ ;
}
@Override
public int hashCode() {
- return Objects.hash(ruleKey, lineHash, cveId);
+ return Objects.hash(ruleKey, lineHash);
}
}
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/AnticipatedTransitionTracker.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/AnticipatedTransitionTracker.java
index ebba139292d..d72d445ccda 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/AnticipatedTransitionTracker.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/AnticipatedTransitionTracker.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -22,8 +22,7 @@ package org.sonar.core.issue.tracking;
import java.util.Collection;
/**
- * A simplified version of {@link Tracker}, which doesn't use line hash sequences nor block hash sequences and
- * only has two steps instead of 5 steps.
+ * Alternative version of {@link Tracker} used to detect issues to be updated when an anticipated transition from SonarQube IDE is found.
*/
public class AnticipatedTransitionTracker<RAW extends Trackable, BASE extends Trackable> extends AbstractTracker<RAW, BASE> {
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockHashSequence.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockHashSequence.java
index a6b168e78d8..1b016b6bf7e 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockHashSequence.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockHashSequence.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java
index dbc39985251..3adef3644e6 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/FilteringBaseInputWrapper.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/FilteringBaseInputWrapper.java
index 99880efb960..99183d05013 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/FilteringBaseInputWrapper.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/FilteringBaseInputWrapper.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Input.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Input.java
index 477d820e3f9..cd38108b9e3 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Input.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Input.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/LazyInput.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/LazyInput.java
index 0b710eef8b0..7c6eae96d2d 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/LazyInput.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/LazyInput.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/LineHashSequence.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/LineHashSequence.java
index 4668a188c76..a85c6ca6085 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/LineHashSequence.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/LineHashSequence.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/NonClosedTracking.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/NonClosedTracking.java
index 8ef9870b03d..b9f07b8c492 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/NonClosedTracking.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/NonClosedTracking.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/SimpleTracker.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/SimpleTracker.java
index 1002cbc616b..d859c663696 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/SimpleTracker.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/SimpleTracker.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Trackable.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Trackable.java
index 63e6a919287..f78ce451b72 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Trackable.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Trackable.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -50,7 +50,4 @@ public interface Trackable {
* Functional update date for the issue. See {@link DefaultIssue#updateDate()}
*/
Date getUpdateDate();
-
- @CheckForNull
- String getCveId();
}
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracker.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracker.java
index e17aec00c3f..e45f7629c12 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracker.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracker.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracking.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracking.java
index 501fb817b73..95aee9052a9 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracking.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/Tracking.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/package-info.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/package-info.java
index b77883d70c7..7fc191f378c 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/language/LanguagesProvider.java b/sonar-core/src/main/java/org/sonar/core/language/LanguagesProvider.java
index 1298c19b83d..fd00da55889 100644
--- a/sonar-core/src/main/java/org/sonar/core/language/LanguagesProvider.java
+++ b/sonar-core/src/main/java/org/sonar/core/language/LanguagesProvider.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/language/UnanalyzedLanguages.java b/sonar-core/src/main/java/org/sonar/core/language/UnanalyzedLanguages.java
index 5a40aefdc13..96b90e52d61 100644
--- a/sonar-core/src/main/java/org/sonar/core/language/UnanalyzedLanguages.java
+++ b/sonar-core/src/main/java/org/sonar/core/language/UnanalyzedLanguages.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/language/package-info.java b/sonar-core/src/main/java/org/sonar/core/language/package-info.java
index 1a0415d4226..3bb683938a2 100644
--- a/sonar-core/src/main/java/org/sonar/core/language/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/language/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java b/sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java
index d85ce1b1779..191829848d9 100644
--- a/sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java
+++ b/sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/metric/SoftwareQualitiesMetrics.java b/sonar-core/src/main/java/org/sonar/core/metric/SoftwareQualitiesMetrics.java
index aaf2f7b0536..69bcb23a405 100644
--- a/sonar-core/src/main/java/org/sonar/core/metric/SoftwareQualitiesMetrics.java
+++ b/sonar-core/src/main/java/org/sonar/core/metric/SoftwareQualitiesMetrics.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/metric/package-info.java b/sonar-core/src/main/java/org/sonar/core/metric/package-info.java
index 30d617a86b5..c89bf183230 100644
--- a/sonar-core/src/main/java/org/sonar/core/metric/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/metric/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ClassDerivedBeanDefinition.java b/sonar-core/src/main/java/org/sonar/core/platform/ClassDerivedBeanDefinition.java
index aaad1c4ddf8..871b7a973e1 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/ClassDerivedBeanDefinition.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/ClassDerivedBeanDefinition.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ComponentKeys.java b/sonar-core/src/main/java/org/sonar/core/platform/ComponentKeys.java
index 63486420c65..554b2b26beb 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/ComponentKeys.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/ComponentKeys.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -22,9 +22,9 @@ package org.sonar.core.platform;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;
-import org.sonar.core.util.Uuids;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.sonar.core.util.Uuids;
public class ComponentKeys {
private static final Logger LOG = LoggerFactory.getLogger(ComponentKeys.class);
@@ -54,7 +54,7 @@ public class ComponentKeys {
String key = component.toString();
if (IDENTITY_HASH_PATTERN.matcher(key).matches()) {
if (!objectsWithoutToString.add(component.getClass())) {
- log.warn(String.format("Bad component key: %s. Please implement toString() method on class %s", key, component.getClass().getName()));
+ log.warn("Bad component key: {}. Please implement toString() method on class {}", key, component.getClass().getName());
}
key += Uuids.create();
}
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/Container.java b/sonar-core/src/main/java/org/sonar/core/platform/Container.java
index 995d3b6904d..f95d1059a68 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/Container.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/Container.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ContainerPopulator.java b/sonar-core/src/main/java/org/sonar/core/platform/ContainerPopulator.java
index 0e99a9ad71f..2fb6add3857 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/ContainerPopulator.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/ContainerPopulator.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/EditionProvider.java b/sonar-core/src/main/java/org/sonar/core/platform/EditionProvider.java
index 66a23212207..c508a05336b 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/EditionProvider.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/EditionProvider.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ExplodedPlugin.java b/sonar-core/src/main/java/org/sonar/core/platform/ExplodedPlugin.java
index 4124f8991e9..5c94ef5ad39 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/ExplodedPlugin.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/ExplodedPlugin.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java b/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java
index 4bd28cfab38..e7490d1a19d 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/LazyStrategy.java b/sonar-core/src/main/java/org/sonar/core/platform/LazyStrategy.java
index 441a5c9da0a..b62cc39c420 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/LazyStrategy.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/LazyStrategy.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/LazyUnlessStartableStrategy.java b/sonar-core/src/main/java/org/sonar/core/platform/LazyUnlessStartableStrategy.java
index d1a16536c06..74d429ba093 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/LazyUnlessStartableStrategy.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/LazyUnlessStartableStrategy.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java b/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java
index a7c5ddc6cbd..8c373ad95b0 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/Module.java b/sonar-core/src/main/java/org/sonar/core/platform/Module.java
index 9b85c05b14e..a3e114842b1 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/Module.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/Module.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PlatformEditionProvider.java b/sonar-core/src/main/java/org/sonar/core/platform/PlatformEditionProvider.java
index c11a63ebaec..31b5fa5bb4b 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PlatformEditionProvider.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PlatformEditionProvider.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoader.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoader.java
index fe59b63e287..45805c1591d 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoader.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoader.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoaderDef.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoaderDef.java
index 0b6dd51baf7..bf5eed54208 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoaderDef.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginClassLoaderDef.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginClassloaderFactory.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginClassloaderFactory.java
index cc2e2eba190..33da0883b0f 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PluginClassloaderFactory.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginClassloaderFactory.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java
index 636dc7e5edd..d90f896cdc8 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginJarExploder.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginJarExploder.java
index f75a0e0ae66..97ca45891bd 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PluginJarExploder.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginJarExploder.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginRepository.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginRepository.java
index cf8b7216ef0..a630dfa8af7 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PluginRepository.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginRepository.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PriorityBeanFactory.java b/sonar-core/src/main/java/org/sonar/core/platform/PriorityBeanFactory.java
index dd39f88f7b0..dce8386b983 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PriorityBeanFactory.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PriorityBeanFactory.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/RemotePluginFile.java b/sonar-core/src/main/java/org/sonar/core/platform/RemotePluginFile.java
index 3810d3c562f..36b010304d9 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/RemotePluginFile.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/RemotePluginFile.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ServerId.java b/sonar-core/src/main/java/org/sonar/core/platform/ServerId.java
index b6c6c213db9..3174285b9be 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/ServerId.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/ServerId.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/SonarQubeVersion.java b/sonar-core/src/main/java/org/sonar/core/platform/SonarQubeVersion.java
index 4e5f71a5e5a..270d2f9df4c 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/SonarQubeVersion.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/SonarQubeVersion.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java b/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java
index 4d9332f3741..dea3850a81c 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -24,6 +24,7 @@ import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.Supplier;
@@ -243,7 +244,7 @@ public class SpringComponentContainer implements StartableContainer {
private void stopChildren() {
// loop over a copy of list of children in reverse order
- Lists.reverse(new ArrayList<>(this.children)).forEach(SpringComponentContainer::stopComponents);
+ Lists.reverse(new ArrayList<>(this.children)).stream().filter(Objects::nonNull).forEach(SpringComponentContainer::stopComponents);
}
public SpringComponentContainer createChild() {
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/SpringInitStrategy.java b/sonar-core/src/main/java/org/sonar/core/platform/SpringInitStrategy.java
index 3414a77be6c..2fb250bb4b3 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/SpringInitStrategy.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/SpringInitStrategy.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/StartableBeanPostProcessor.java b/sonar-core/src/main/java/org/sonar/core/platform/StartableBeanPostProcessor.java
index 97a111eed9c..1186cbb5a16 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/StartableBeanPostProcessor.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/StartableBeanPostProcessor.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/StartableContainer.java b/sonar-core/src/main/java/org/sonar/core/platform/StartableContainer.java
index 75b9b4379ba..96dd6eed83f 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/StartableContainer.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/StartableContainer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/package-info.java b/sonar-core/src/main/java/org/sonar/core/platform/package-info.java
index d29e3c54eaf..7ef0fab60cd 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/plugin/PluginType.java b/sonar-core/src/main/java/org/sonar/core/plugin/PluginType.java
index a63a5d10311..8de607a93b8 100644
--- a/sonar-core/src/main/java/org/sonar/core/plugin/PluginType.java
+++ b/sonar-core/src/main/java/org/sonar/core/plugin/PluginType.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/plugin/package-info.java b/sonar-core/src/main/java/org/sonar/core/plugin/package-info.java
index c938441a135..ee1d3d5f341 100644
--- a/sonar-core/src/main/java/org/sonar/core/plugin/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/plugin/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/ImpactFormatter.java b/sonar-core/src/main/java/org/sonar/core/rule/ImpactFormatter.java
index 62cb1726e18..940abbcfde8 100644
--- a/sonar-core/src/main/java/org/sonar/core/rule/ImpactFormatter.java
+++ b/sonar-core/src/main/java/org/sonar/core/rule/ImpactFormatter.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/ImpactSeverityMapper.java b/sonar-core/src/main/java/org/sonar/core/rule/ImpactSeverityMapper.java
index b68057cf429..603b3fc2bff 100644
--- a/sonar-core/src/main/java/org/sonar/core/rule/ImpactSeverityMapper.java
+++ b/sonar-core/src/main/java/org/sonar/core/rule/ImpactSeverityMapper.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/RuleType.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleType.java
new file mode 100644
index 00000000000..89fa04deab3
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleType.java
@@ -0,0 +1,77 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.rule;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import javax.annotation.CheckForNull;
+
+import static java.lang.String.format;
+import static java.util.Arrays.stream;
+import static java.util.Collections.unmodifiableSet;
+
+public enum RuleType {
+ CODE_SMELL(1), BUG(2), VULNERABILITY(3), SECURITY_HOTSPOT(4);
+
+ private static final Set<String> ALL_NAMES = unmodifiableSet(new LinkedHashSet<>(stream(values())
+ .map(Enum::name)
+ .toList()));
+
+ private final int dbConstant;
+
+ RuleType(int dbConstant) {
+ this.dbConstant = dbConstant;
+ }
+
+ public int getDbConstant() {
+ return dbConstant;
+ }
+
+ public static Set<String> names() {
+ return ALL_NAMES;
+ }
+
+ /**
+ * Returns the enum constant of the specified DB column value.
+ */
+ public static RuleType fromDbConstant(int dbConstant) {
+ // iterating the array is fast-enough as size is small. No need for a map.
+ for (RuleType type : values()) {
+ if (type.getDbConstant() == dbConstant) {
+ return type;
+ }
+ }
+ throw new IllegalArgumentException(format("Unsupported type value : %d", dbConstant));
+ }
+
+ @CheckForNull
+ public static RuleType valueOfNullable(int dbConstant) {
+ // iterating the array is fast-enough as size is small. No need for a map.
+ for (RuleType type : values()) {
+ if (type.getDbConstant() == dbConstant) {
+ return type;
+ }
+ }
+ if (dbConstant == 0) {
+ return null;
+ }
+ throw new IllegalArgumentException(format("Unsupported type value : %d", dbConstant));
+ }
+}
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/RuleTypeMapper.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleTypeMapper.java
new file mode 100644
index 00000000000..06eca3785a5
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleTypeMapper.java
@@ -0,0 +1,46 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.rule;
+
+public class RuleTypeMapper {
+
+ private RuleTypeMapper() {
+ throw new UnsupportedOperationException("Utility class");
+ }
+
+ public static org.sonar.api.rules.RuleType toApiRuleType(RuleType ruleType) {
+ return switch (ruleType) {
+ case BUG -> org.sonar.api.rules.RuleType.BUG;
+ case CODE_SMELL -> org.sonar.api.rules.RuleType.CODE_SMELL;
+ case SECURITY_HOTSPOT -> org.sonar.api.rules.RuleType.SECURITY_HOTSPOT;
+ case VULNERABILITY -> org.sonar.api.rules.RuleType.VULNERABILITY;
+ };
+ }
+
+ public static RuleType toRuleType(org.sonar.api.rules.RuleType ruleType) {
+ return switch (ruleType) {
+ case BUG -> RuleType.BUG;
+ case CODE_SMELL -> RuleType.CODE_SMELL;
+ case SECURITY_HOTSPOT -> RuleType.SECURITY_HOTSPOT;
+ case VULNERABILITY -> RuleType.VULNERABILITY;
+ };
+ }
+
+}
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/package-info.java b/sonar-core/src/main/java/org/sonar/core/rule/package-info.java
index 573a53047dd..8df7fbebc86 100644
--- a/sonar-core/src/main/java/org/sonar/core/rule/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/rule/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializer.java b/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializer.java
index 9cca8cb59fd..d55b24b6b99 100644
--- a/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializer.java
+++ b/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializer.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java b/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java
index 1a06a8d7571..6c1afe28737 100644
--- a/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java
+++ b/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/sarif/package-info.java b/sonar-core/src/main/java/org/sonar/core/sarif/package-info.java
index 5d65caf5da7..8efbf235cf2 100644
--- a/sonar-core/src/main/java/org/sonar/core/sarif/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/sarif/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/scadata/DefaultScaDataSourceImpl.java b/sonar-core/src/main/java/org/sonar/core/scadata/DefaultScaDataSourceImpl.java
new file mode 100644
index 00000000000..24276ae7a53
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/core/scadata/DefaultScaDataSourceImpl.java
@@ -0,0 +1,41 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.scadata;
+
+import jakarta.annotation.Priority;
+import org.sonar.api.server.ServerSide;
+
+import java.util.OptionalInt;
+
+/**
+ * Default implementation of {@link ScaDataSource} that provides default, no-op values
+ * when SCA extension is not available.
+ */
+@ServerSide
+@Priority(2)
+public class DefaultScaDataSourceImpl implements ScaDataSource {
+ public int getVulnerabilityCount(String componentUuid) {
+ return 0;
+ }
+
+ public OptionalInt getVulnerabilityRating(String componentUuid) {
+ return OptionalInt.empty();
+ }
+}
diff --git a/sonar-core/src/main/java/org/sonar/core/scadata/ScaDataSource.java b/sonar-core/src/main/java/org/sonar/core/scadata/ScaDataSource.java
new file mode 100644
index 00000000000..10b56d79b9c
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/core/scadata/ScaDataSource.java
@@ -0,0 +1,33 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.scadata;
+
+import java.util.OptionalInt;
+
+public interface ScaDataSource {
+ /**
+ * The component UUID could be a regular project, or it could be an application.
+ * It is not yet resolved to a list of real branches.
+ * @param componentUuid the component UUID
+ * @return count of how many vulnerabilities
+ */
+ int getVulnerabilityCount(String componentUuid);
+ OptionalInt getVulnerabilityRating(String componentUuid);
+}
diff --git a/sonar-core/src/main/java/org/sonar/core/scadata/package-info.java b/sonar-core/src/main/java/org/sonar/core/scadata/package-info.java
new file mode 100644
index 00000000000..f0dba2ec833
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/core/scadata/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.scadata;
diff --git a/sonar-core/src/main/java/org/sonar/core/telemetry/TelemetryExtension.java b/sonar-core/src/main/java/org/sonar/core/telemetry/TelemetryExtension.java
index 06ac2b98f2d..c2ce25eefb6 100644
--- a/sonar-core/src/main/java/org/sonar/core/telemetry/TelemetryExtension.java
+++ b/sonar-core/src/main/java/org/sonar/core/telemetry/TelemetryExtension.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/telemetry/package-info.java b/sonar-core/src/main/java/org/sonar/core/telemetry/package-info.java
index 9e0f3d56382..f922fee05e0 100644
--- a/sonar-core/src/main/java/org/sonar/core/telemetry/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/telemetry/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/user/DefaultUser.java b/sonar-core/src/main/java/org/sonar/core/user/DefaultUser.java
index cd7e19b22ff..5979b5b7d55 100644
--- a/sonar-core/src/main/java/org/sonar/core/user/DefaultUser.java
+++ b/sonar-core/src/main/java/org/sonar/core/user/DefaultUser.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/user/package-info.java b/sonar-core/src/main/java/org/sonar/core/user/package-info.java
index 26967b82622..be13a023748 100644
--- a/sonar-core/src/main/java/org/sonar/core/user/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/user/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/CloseableIterator.java b/sonar-core/src/main/java/org/sonar/core/util/CloseableIterator.java
index 8acf3a9cc8f..9b195d8250d 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/CloseableIterator.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/CloseableIterator.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/ContextException.java b/sonar-core/src/main/java/org/sonar/core/util/ContextException.java
index 7e7f7917c0c..b0e746dc763 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/ContextException.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/ContextException.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/DefaultHttpDownloader.java b/sonar-core/src/main/java/org/sonar/core/util/DefaultHttpDownloader.java
index 9e9b32bc967..d423ae3524a 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/DefaultHttpDownloader.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/DefaultHttpDownloader.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/FileUtils.java b/sonar-core/src/main/java/org/sonar/core/util/FileUtils.java
index 9cb0b7ca941..ca19df6a0dd 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/FileUtils.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/FileUtils.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/LineReaderIterator.java b/sonar-core/src/main/java/org/sonar/core/util/LineReaderIterator.java
index 43472d32e6f..b85a3112e97 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/LineReaderIterator.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/LineReaderIterator.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/NonNullInputFunction.java b/sonar-core/src/main/java/org/sonar/core/util/NonNullInputFunction.java
index 8b688a1783f..8c1fe79e2ca 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/NonNullInputFunction.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/NonNullInputFunction.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/ParamChange.java b/sonar-core/src/main/java/org/sonar/core/util/ParamChange.java
index 52d4fbd26fa..812e012f608 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/ParamChange.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/ParamChange.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/ProcessWrapperFactory.java b/sonar-core/src/main/java/org/sonar/core/util/ProcessWrapperFactory.java
new file mode 100644
index 00000000000..d68ebbc01f1
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/core/util/ProcessWrapperFactory.java
@@ -0,0 +1,147 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.util;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Consumer;
+import javax.annotation.Nullable;
+import org.apache.commons.exec.CommandLine;
+import org.apache.commons.exec.DefaultExecuteResultHandler;
+import org.apache.commons.exec.DefaultExecutor;
+import org.apache.commons.exec.ExecuteWatchdog;
+import org.apache.commons.exec.Executor;
+import org.apache.commons.exec.LogOutputStream;
+import org.apache.commons.exec.PumpStreamHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static java.lang.String.format;
+import static java.lang.String.join;
+import static org.apache.commons.exec.ExecuteWatchdog.INFINITE_TIMEOUT_DURATION;
+
+public class ProcessWrapperFactory {
+ private static final Logger LOG = LoggerFactory.getLogger(ProcessWrapperFactory.class);
+
+ public ProcessWrapperFactory() {
+ // nothing to do
+ }
+
+ public ProcessWrapper create(@Nullable Path baseDir, Consumer<String> stdOutLineConsumer, Consumer<String> stdErrLineConsumer, String... command) {
+ return new ProcessWrapper(baseDir, stdOutLineConsumer, stdErrLineConsumer, Map.of(), command);
+ }
+
+ public ProcessWrapper create(@Nullable Path baseDir, Consumer<String> stdOutLineConsumer, Consumer<String> stdErrLineConsumer, Map<String, String> envVariablesOverrides,
+ String... command) {
+ return new ProcessWrapper(baseDir, stdOutLineConsumer, stdErrLineConsumer, envVariablesOverrides, command);
+ }
+
+ public static class ProcessWrapper {
+
+ private final Path baseDir;
+ private final Consumer<String> stdOutLineConsumer;
+ private final Consumer<String> stdErrLineConsumer;
+ private final String[] command;
+ private final Map<String, String> envVariables = new HashMap<>();
+ private final AtomicReference<Exception> exceptionWhileProcessingStream = new AtomicReference<>();
+ private ExecuteWatchdog watchdog = null;
+
+ ProcessWrapper(@Nullable Path baseDir, Consumer<String> stdOutLineConsumer, Consumer<String> stdErrLineConsumer, Map<String, String> envVariablesOverrides, String... command) {
+ this.baseDir = baseDir;
+ this.stdOutLineConsumer = stdOutLineConsumer;
+ this.stdErrLineConsumer = stdErrLineConsumer;
+ this.envVariables.putAll(System.getenv());
+ this.envVariables.putAll(envVariablesOverrides);
+ this.command = command;
+ }
+
+ public void execute() throws IOException {
+ CommandLine cmdLine = new CommandLine(command[0]);
+ for (int i = 1; i < command.length; i++) {
+ cmdLine.addArgument(command[i], false);
+ }
+
+ var executor = buildExecutor();
+
+ DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
+ executor.execute(cmdLine, envVariables, resultHandler);
+
+ try {
+ resultHandler.waitFor();
+ int exitValue = resultHandler.getExitValue();
+ if (exitValue == Executor.INVALID_EXITVALUE) {
+ throw resultHandler.getException();
+ }
+ if (exitValue != 0 && !watchdog.killedProcess()) {
+ throw new IllegalStateException(format("Command execution exited with code: %d", exitValue), resultHandler.getException());
+ }
+ if (exceptionWhileProcessingStream.get() != null) {
+ throw new IllegalStateException("Error while processing stream for command", exceptionWhileProcessingStream.get());
+ }
+ } catch (InterruptedException e) {
+ LOG.warn("Command [{}] interrupted", join(" ", command), e);
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ private DefaultExecutor buildExecutor() {
+ DefaultExecutor.Builder<?> builder = DefaultExecutor.builder();
+ if (baseDir != null) {
+ builder.setWorkingDirectory(baseDir.toFile());
+ }
+
+ PumpStreamHandler psh = new PumpStreamHandler(
+ new ExceptionCatchingLogOutputStream(stdOutLineConsumer),
+ new ExceptionCatchingLogOutputStream(stdErrLineConsumer));
+ builder.setExecuteStreamHandler(psh);
+
+ var executor = builder.get();
+ watchdog = ExecuteWatchdog.builder().setTimeout(INFINITE_TIMEOUT_DURATION).get();
+ executor.setWatchdog(watchdog);
+ return executor;
+ }
+
+ public void destroy() {
+ watchdog.destroyProcess();
+ }
+
+ private class ExceptionCatchingLogOutputStream extends LogOutputStream {
+
+ private final Consumer<String> lineConsumer;
+
+ public ExceptionCatchingLogOutputStream(Consumer<String> lineConsumer) {
+ this.lineConsumer = lineConsumer;
+ }
+
+ @Override
+ protected void processLine(String line, int logLevel) {
+ try {
+ lineConsumer.accept(line);
+ } catch (Exception e) {
+ exceptionWhileProcessingStream.compareAndSet(null, e);
+ watchdog.destroyProcess();
+ }
+ }
+ }
+ }
+}
diff --git a/sonar-core/src/main/java/org/sonar/core/util/ProgressLogger.java b/sonar-core/src/main/java/org/sonar/core/util/ProgressLogger.java
index d52650435b0..01118e962c6 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/ProgressLogger.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/ProgressLogger.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -106,7 +106,11 @@ public class ProgressLogger {
private void log() {
long current = counter.get();
- logger.info(String.format("%d %s processed (%d items/sec)", current, pluralLabel, 1000 * (current - previousCounter) / periodMs));
+ logger.atInfo()
+ .addArgument(current)
+ .addArgument(pluralLabel)
+ .addArgument(() -> 1000 * (current - previousCounter) / periodMs)
+ .log("{} {} processed ({} items/sec)");
previousCounter = current;
}
}
diff --git a/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java b/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java
index ad49c7a1114..1afacbeb118 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/ProtobufJsonFormat.java b/sonar-core/src/main/java/org/sonar/core/util/ProtobufJsonFormat.java
index 522f4dd84f5..4fbdccc04e3 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/ProtobufJsonFormat.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/ProtobufJsonFormat.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/ResourceUtils.java b/sonar-core/src/main/java/org/sonar/core/util/ResourceUtils.java
index 75f6fa9d199..37a711cecd0 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/ResourceUtils.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/ResourceUtils.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/SequenceUuidFactory.java b/sonar-core/src/main/java/org/sonar/core/util/SequenceUuidFactory.java
index 51aa70811d5..1d949b10079 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/SequenceUuidFactory.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/SequenceUuidFactory.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/SettingFormatter.java b/sonar-core/src/main/java/org/sonar/core/util/SettingFormatter.java
index bf966906733..45124695768 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/SettingFormatter.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/SettingFormatter.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/Slug.java b/sonar-core/src/main/java/org/sonar/core/util/Slug.java
index b67badc266f..78541fdf190 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/Slug.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/Slug.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/UtcDateUtils.java b/sonar-core/src/main/java/org/sonar/core/util/UtcDateUtils.java
index d71db837c71..17b7880c032 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/UtcDateUtils.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/UtcDateUtils.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/UuidFactory.java b/sonar-core/src/main/java/org/sonar/core/util/UuidFactory.java
index 6ffa56326f5..6682aac57f3 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/UuidFactory.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/UuidFactory.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryFast.java b/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryFast.java
index 3159b446684..61acd42ca5d 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryFast.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryFast.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryImpl.java b/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryImpl.java
index 01d29a06563..addb877e836 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryImpl.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/UuidFactoryImpl.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/Uuids.java b/sonar-core/src/main/java/org/sonar/core/util/Uuids.java
index 42fe078671a..286410dbc89 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/Uuids.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/Uuids.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/issue/Issue.java b/sonar-core/src/main/java/org/sonar/core/util/issue/Issue.java
index 68771066ac4..c2ce9281444 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/issue/Issue.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/issue/Issue.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/issue/IssueChangedEvent.java b/sonar-core/src/main/java/org/sonar/core/util/issue/IssueChangedEvent.java
index d36d4f2f9c3..78acfc16771 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/issue/IssueChangedEvent.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/issue/IssueChangedEvent.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/issue/package-info.java b/sonar-core/src/main/java/org/sonar/core/util/issue/package-info.java
index f4b0321728c..fe52aded1bc 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/issue/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/issue/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/logs/DefaultProfiler.java b/sonar-core/src/main/java/org/sonar/core/util/logs/DefaultProfiler.java
index 5ab3dceefdc..c277a17a041 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/logs/DefaultProfiler.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/logs/DefaultProfiler.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/logs/NullProfiler.java b/sonar-core/src/main/java/org/sonar/core/util/logs/NullProfiler.java
index 4b74fbade7d..1420fb37583 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/logs/NullProfiler.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/logs/NullProfiler.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/logs/Profiler.java b/sonar-core/src/main/java/org/sonar/core/util/logs/Profiler.java
index dc4a0e67241..060a1bd2dbf 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/logs/Profiler.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/logs/Profiler.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/logs/package-info.java b/sonar-core/src/main/java/org/sonar/core/util/logs/package-info.java
index fd14c7082d2..3476a829285 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/logs/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/logs/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/package-info.java b/sonar-core/src/main/java/org/sonar/core/util/package-info.java
index ccd6d64d506..71df1b3326d 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/rule/RuleChange.java b/sonar-core/src/main/java/org/sonar/core/util/rule/RuleChange.java
index c3b99a2834c..2cedd012db5 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/rule/RuleChange.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/rule/RuleChange.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/rule/RuleSetChangedEvent.java b/sonar-core/src/main/java/org/sonar/core/util/rule/RuleSetChangedEvent.java
index 7767d89a908..5670e87c111 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/rule/RuleSetChangedEvent.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/rule/RuleSetChangedEvent.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/rule/package-info.java b/sonar-core/src/main/java/org/sonar/core/util/rule/package-info.java
index 330111bfb1a..3a7a3657112 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/rule/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/rule/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java b/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java
index 9fd1574c16e..a2803210916 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/java/org/sonar/core/util/stream/package-info.java b/sonar-core/src/main/java/org/sonar/core/util/stream/package-info.java
index 2468b969943..8fe2209fe1e 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/stream/package-info.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/stream/package-info.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties
index 2cfe84e30ba..752dc05b214 100644
--- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties
+++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties
@@ -2921,13 +2921,6 @@ rule.clean_code_attribute.TESTED.title=This is an adaptability rule, the code sh
rule.clean_code_attribute.TRUSTWORTHY=Trustworthy
rule.clean_code_attribute.TRUSTWORTHY.title=This is a responsibility rule, the code should be trustworthy.
-rule.cve_details=CVE details
-rule.cve_details.cwes=CWEs
-rule.cve_details.epss_score=EPSS Score
-rule.cve_details.epss_score.value={0}% ({1}th)
-rule.cve_details.cvss_score=CVSS Score
-rule.cve_details.published_date=Published Date
-
#------------------------------------------------------------------------------
#
# EMAIL NOTIFICATION CONFIGURATION
diff --git a/sonar-core/src/test/java/com/sonarsource/plugins/license/api/FooBar.java b/sonar-core/src/test/java/com/sonarsource/plugins/license/api/FooBar.java
index ac4ae13d0f6..2c37958ddd6 100644
--- a/sonar-core/src/test/java/com/sonarsource/plugins/license/api/FooBar.java
+++ b/sonar-core/src/test/java/com/sonarsource/plugins/license/api/FooBar.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysSanitizationTest.java b/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysSanitizationTest.java
index 6d2251bbe72..dc587b04a47 100644
--- a/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysSanitizationTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysSanitizationTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysTest.java b/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysTest.java
index 655daf8173a..5cd9410f08d 100644
--- a/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/component/ComponentKeysTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java b/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java
index 9a683d236a7..1aa5d6f3cbe 100644
--- a/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/config/MQRModePropertiesTest.java b/sonar-core/src/test/java/org/sonar/core/config/MQRModePropertiesTest.java
index 78435aeccf4..9ae78a641ff 100644
--- a/sonar-core/src/test/java/org/sonar/core/config/MQRModePropertiesTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/config/MQRModePropertiesTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/config/MaxTokenLifetimeOptionTest.java b/sonar-core/src/test/java/org/sonar/core/config/MaxTokenLifetimeOptionTest.java
index 4239006ae34..b7f1e2d561a 100644
--- a/sonar-core/src/test/java/org/sonar/core/config/MaxTokenLifetimeOptionTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/config/MaxTokenLifetimeOptionTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/config/PurgePropertiesTest.java b/sonar-core/src/test/java/org/sonar/core/config/PurgePropertiesTest.java
index a2a2b354e5d..4c52061d9c5 100644
--- a/sonar-core/src/test/java/org/sonar/core/config/PurgePropertiesTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/config/PurgePropertiesTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/config/SecurityPropertiesTest.java b/sonar-core/src/test/java/org/sonar/core/config/SecurityPropertiesTest.java
index 11ada54339a..89886278b74 100644
--- a/sonar-core/src/test/java/org/sonar/core/config/SecurityPropertiesTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/config/SecurityPropertiesTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/documentation/DefaultDocumentationLinkGeneratorTest.java b/sonar-core/src/test/java/org/sonar/core/documentation/DefaultDocumentationLinkGeneratorTest.java
index 852e4ac0cd2..50cda8362b7 100644
--- a/sonar-core/src/test/java/org/sonar/core/documentation/DefaultDocumentationLinkGeneratorTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/documentation/DefaultDocumentationLinkGeneratorTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProviderTest.java b/sonar-core/src/test/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProviderTest.java
index 228cd1fc8e1..f742ad6781a 100644
--- a/sonar-core/src/test/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProviderTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/documentation/VersionedDocumentationBaseLinkProviderTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionRepositoryImplTest.java b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionRepositoryImplTest.java
index fb9ca6f058f..46d92dcc51b 100644
--- a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionRepositoryImplTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionRepositoryImplTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionTest.java b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionTest.java
index 9b43b045e02..7fa9c23949f 100644
--- a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsInstallerTest.java b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsInstallerTest.java
index 1321f642887..ce282bf8172 100644
--- a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsInstallerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsInstallerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsLoaderTest.java b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsLoaderTest.java
index 55f853c3911..3ed673728f0 100644
--- a/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsLoaderTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/extension/CoreExtensionsLoaderTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/fips/FipsDetectorTest.java b/sonar-core/src/test/java/org/sonar/core/fips/FipsDetectorTest.java
index e8f8a75d983..31e97a5d66a 100644
--- a/sonar-core/src/test/java/org/sonar/core/fips/FipsDetectorTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/fips/FipsDetectorTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/hash/LineRangeTest.java b/sonar-core/src/test/java/org/sonar/core/hash/LineRangeTest.java
index 6644225cf82..a1ee37f02a0 100644
--- a/sonar-core/src/test/java/org/sonar/core/hash/LineRangeTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/hash/LineRangeTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/hash/SourceHashComputerTest.java b/sonar-core/src/test/java/org/sonar/core/hash/SourceHashComputerTest.java
index c2858802d2f..1c69e15210e 100644
--- a/sonar-core/src/test/java/org/sonar/core/hash/SourceHashComputerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/hash/SourceHashComputerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/hash/SourceLinesHashesComputerTest.java b/sonar-core/src/test/java/org/sonar/core/hash/SourceLinesHashesComputerTest.java
index 7acf183ad7f..66b7526d7d4 100644
--- a/sonar-core/src/test/java/org/sonar/core/hash/SourceLinesHashesComputerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/hash/SourceLinesHashesComputerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/i18n/DefaultI18nTest.java b/sonar-core/src/test/java/org/sonar/core/i18n/DefaultI18nTest.java
index ea4856cd583..86c0ff9d62a 100644
--- a/sonar-core/src/test/java/org/sonar/core/i18n/DefaultI18nTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/i18n/DefaultI18nTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/i18n/DurationLabelTest.java b/sonar-core/src/test/java/org/sonar/core/i18n/DurationLabelTest.java
index e569321a222..ff8bbba9d71 100644
--- a/sonar-core/src/test/java/org/sonar/core/i18n/DurationLabelTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/i18n/DurationLabelTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/i18n/I18nClassloaderTest.java b/sonar-core/src/test/java/org/sonar/core/i18n/I18nClassloaderTest.java
index c23346cf3fc..b0ccaa8dbc7 100644
--- a/sonar-core/src/test/java/org/sonar/core/i18n/I18nClassloaderTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/i18n/I18nClassloaderTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/AnticipatedTransitionTest.java b/sonar-core/src/test/java/org/sonar/core/issue/AnticipatedTransitionTest.java
index 019ab386253..a0d365fb3b9 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/AnticipatedTransitionTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/AnticipatedTransitionTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java b/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java
index ad935a1f7ad..2c490448f04 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/FieldDiffsTest.java b/sonar-core/src/test/java/org/sonar/core/issue/FieldDiffsTest.java
index 18f2d916f3e..bf8c7a53380 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/FieldDiffsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/FieldDiffsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/IssueChangeContextTest.java b/sonar-core/src/test/java/org/sonar/core/issue/IssueChangeContextTest.java
index 253011f9986..c391c7eca43 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/IssueChangeContextTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/IssueChangeContextTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/tracking/AbstractTrackerTest.java b/sonar-core/src/test/java/org/sonar/core/issue/tracking/AbstractTrackerTest.java
index 113462733e5..abe2abcc3bc 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/tracking/AbstractTrackerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/tracking/AbstractTrackerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/tracking/AnticipatedTransitionTrackerTest.java b/sonar-core/src/test/java/org/sonar/core/issue/tracking/AnticipatedTransitionTrackerTest.java
index ffd39f76048..1c91edbde87 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/tracking/AnticipatedTransitionTrackerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/tracking/AnticipatedTransitionTrackerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockHashSequenceTest.java b/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockHashSequenceTest.java
index 56ffe4428f0..bd71684740d 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockHashSequenceTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockHashSequenceTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockRecognizerTest.java b/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockRecognizerTest.java
index 2e172fbd089..cfc090c8532 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockRecognizerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/tracking/BlockRecognizerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/tracking/TrackerTest.java b/sonar-core/src/test/java/org/sonar/core/issue/tracking/TrackerTest.java
index 675eef1cc26..37feb51e49b 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/tracking/TrackerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/tracking/TrackerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -459,56 +459,20 @@ public class TrackerTest {
assertThat(tracking.baseFor(raw2)).isEqualTo(base1);
}
- @Test
- public void match_issues_with_same_cve_id() {
- FakeInput baseInput = new FakeInput();
- Issue base = new Issue(null, "", RuleKey.of("sca", "use-of-vulnerable-dependency"), "Vulnerable", org.sonar.api.issue.Issue.STATUS_OPEN, new Date(), "CVE-1");
- baseInput.addIssue(base);
- FakeInput rawInput = new FakeInput();
- Issue raw = new Issue(null, "", RuleKey.of("sca", "use-of-vulnerable-dependency"), "Vulnerable", org.sonar.api.issue.Issue.STATUS_OPEN, new Date(), "CVE-1");
- rawInput.addIssue(raw);
-
- Tracking<Issue, Issue> tracking = tracker.trackNonClosed(rawInput, baseInput);
-
- assertThat(tracking.getUnmatchedBases()).isEmpty();
- assertThat(tracking.baseFor(raw)).isEqualTo(base);
- }
-
- @Test
- public void do_not_match_issues_with_different_cve_id() {
- FakeInput baseInput = new FakeInput();
- Issue base = new Issue(null, "", RuleKey.of("sca", "use-of-vulnerable-dependency"), "Vulnerable", org.sonar.api.issue.Issue.STATUS_OPEN, new Date(), "CVE-1");
- baseInput.addIssue(base);
- FakeInput rawInput = new FakeInput();
- Issue raw = new Issue(null, "", RuleKey.of("sca", "use-of-vulnerable-dependency"), "Vulnerable", org.sonar.api.issue.Issue.STATUS_OPEN, new Date(), "CVE-2");
- rawInput.addIssue(raw);
-
- Tracking<Issue, Issue> tracking = tracker.trackNonClosed(rawInput, baseInput);
-
- assertThat(tracking.getUnmatchedBases()).contains(base);
- assertThat(tracking.baseFor(raw)).isNull();
- }
-
private static class Issue implements Trackable {
private final RuleKey ruleKey;
private final Integer line;
private final String message, lineHash;
private final String status;
private final Date updateDate;
- private final String cveId;
Issue(@Nullable Integer line, String lineHash, RuleKey ruleKey, @Nullable String message, String status, Date updateDate) {
- this(line, lineHash, ruleKey, message, status, updateDate, null);
- }
-
- Issue(@Nullable Integer line, String lineHash, RuleKey ruleKey, @Nullable String message, String status, Date updateDate, @Nullable String cveId) {
this.line = line;
this.lineHash = lineHash;
this.ruleKey = ruleKey;
this.status = status;
this.updateDate = updateDate;
this.message = trim(message);
- this.cveId = cveId;
}
@Override
@@ -541,12 +505,6 @@ public class TrackerTest {
public Date getUpdateDate() {
return updateDate;
}
-
- @CheckForNull
- @Override
- public String getCveId() {
- return cveId;
- }
}
private static class FakeInput implements Input<Issue> {
diff --git a/sonar-core/src/test/java/org/sonar/core/language/LanguagesProviderTest.java b/sonar-core/src/test/java/org/sonar/core/language/LanguagesProviderTest.java
index 19635174bef..6022fc26919 100644
--- a/sonar-core/src/test/java/org/sonar/core/language/LanguagesProviderTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/language/LanguagesProviderTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/language/UnanalyzedLanguagesTest.java b/sonar-core/src/test/java/org/sonar/core/language/UnanalyzedLanguagesTest.java
index c539f81cdfa..0a4fcdef0fa 100644
--- a/sonar-core/src/test/java/org/sonar/core/language/UnanalyzedLanguagesTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/language/UnanalyzedLanguagesTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java b/sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java
index 573872d9e36..7c502988a69 100644
--- a/sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/metric/SoftwareQualitiesMetricsTest.java b/sonar-core/src/test/java/org/sonar/core/metric/SoftwareQualitiesMetricsTest.java
index a6a821b59de..34a363dafc5 100644
--- a/sonar-core/src/test/java/org/sonar/core/metric/SoftwareQualitiesMetricsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/metric/SoftwareQualitiesMetricsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/ComponentKeysTest.java b/sonar-core/src/test/java/org/sonar/core/platform/ComponentKeysTest.java
index 9e847841d09..f88e3c76c1d 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/ComponentKeysTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/ComponentKeysTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
@@ -23,10 +23,12 @@ import org.junit.Test;
import org.slf4j.Logger;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.startsWith;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.when;
public class ComponentKeysTest {
@@ -50,12 +52,13 @@ public class ComponentKeysTest {
@Test
public void should_log_warning_if_toString_is_not_overridden() {
Logger log = mock(Logger.class);
+ when(log.isWarnEnabled()).thenReturn(true);
keys.of(new Object(), log);
verifyNoInteractions(log);
// only on non-first runs, to avoid false-positives on singletons
keys.of(new Object(), log);
- verify(log).warn(startsWith("Bad component key"));
+ verify(log).warn(startsWith("Bad component key"), any(), any());
}
@Test
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/LazyUnlessStartableStrategyTest.java b/sonar-core/src/test/java/org/sonar/core/platform/LazyUnlessStartableStrategyTest.java
index 28fc7df03b0..5535efe2b7f 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/LazyUnlessStartableStrategyTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/LazyUnlessStartableStrategyTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java b/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java
index f15d9319161..25be1387a43 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/ModuleTest.java b/sonar-core/src/test/java/org/sonar/core/platform/ModuleTest.java
index 10c8ccca45c..ca99fc7767d 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/ModuleTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/ModuleTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PlatformEditionProviderTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PlatformEditionProviderTest.java
index f32214054bf..8f318300b1e 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/PlatformEditionProviderTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/PlatformEditionProviderTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderDefTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderDefTest.java
index 037bdf4f95c..af8e4415fe2 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderDefTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderDefTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderTest.java
index afefc2e3e40..82610363d2a 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/PluginClassLoaderTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PluginClassloaderFactoryTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PluginClassloaderFactoryTest.java
index cec48fb6a7f..5c553f848af 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/PluginClassloaderFactoryTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/PluginClassloaderFactoryTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java
index 287b729f4e5..59f2aaf4a22 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PluginJarExploderTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PluginJarExploderTest.java
index 01d48d78494..f77194313e4 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/PluginJarExploderTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/PluginJarExploderTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PriorityBeanFactoryTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PriorityBeanFactoryTest.java
index 6e4e973f51f..3ea01c44cb5 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/PriorityBeanFactoryTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/PriorityBeanFactoryTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/ServerIdTest.java b/sonar-core/src/test/java/org/sonar/core/platform/ServerIdTest.java
index f7f9466feb2..05213591da3 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/ServerIdTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/ServerIdTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/SonarQubeVersionTest.java b/sonar-core/src/test/java/org/sonar/core/platform/SonarQubeVersionTest.java
index d82be87403d..d9fda894dd6 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/SonarQubeVersionTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/SonarQubeVersionTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java b/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java
index b1ff7ba83be..fac3b6818f7 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/platform/StartableBeanPostProcessorTest.java b/sonar-core/src/test/java/org/sonar/core/platform/StartableBeanPostProcessorTest.java
index 5b51b365e6d..8bcd39ff1ed 100644
--- a/sonar-core/src/test/java/org/sonar/core/platform/StartableBeanPostProcessorTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/platform/StartableBeanPostProcessorTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/rule/ImpactFormatterTest.java b/sonar-core/src/test/java/org/sonar/core/rule/ImpactFormatterTest.java
index 6883ef15ae2..e8feea74760 100644
--- a/sonar-core/src/test/java/org/sonar/core/rule/ImpactFormatterTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/rule/ImpactFormatterTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/rule/ImpactSeverityMapperTest.java b/sonar-core/src/test/java/org/sonar/core/rule/ImpactSeverityMapperTest.java
index 300c3376196..e788eba52dd 100644
--- a/sonar-core/src/test/java/org/sonar/core/rule/ImpactSeverityMapperTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/rule/ImpactSeverityMapperTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/rule/RuleTypeMapperTest.java b/sonar-core/src/test/java/org/sonar/core/rule/RuleTypeMapperTest.java
new file mode 100644
index 00000000000..7c05d0033f8
--- /dev/null
+++ b/sonar-core/src/test/java/org/sonar/core/rule/RuleTypeMapperTest.java
@@ -0,0 +1,44 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.rule;
+
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class RuleTypeMapperTest {
+
+ @Test
+ void toApiRuleType_shouldMapToApiRuleType() {
+ assertThat(RuleTypeMapper.toApiRuleType(org.sonar.core.rule.RuleType.BUG)).isEqualTo(org.sonar.api.rules.RuleType.BUG);
+ assertThat(RuleTypeMapper.toApiRuleType(org.sonar.core.rule.RuleType.CODE_SMELL)).isEqualTo(org.sonar.api.rules.RuleType.CODE_SMELL);
+ assertThat(RuleTypeMapper.toApiRuleType(org.sonar.core.rule.RuleType.SECURITY_HOTSPOT)).isEqualTo(org.sonar.api.rules.RuleType.SECURITY_HOTSPOT);
+ assertThat(RuleTypeMapper.toApiRuleType(org.sonar.core.rule.RuleType.VULNERABILITY)).isEqualTo(org.sonar.api.rules.RuleType.VULNERABILITY);
+ }
+
+ @Test
+ void toRuleType_shouldMapToCoreRuleType() {
+ assertThat(RuleTypeMapper.toRuleType(org.sonar.api.rules.RuleType.BUG)).isEqualTo(org.sonar.core.rule.RuleType.BUG);
+ assertThat(RuleTypeMapper.toRuleType(org.sonar.api.rules.RuleType.CODE_SMELL)).isEqualTo(org.sonar.core.rule.RuleType.CODE_SMELL);
+ assertThat(RuleTypeMapper.toRuleType(org.sonar.api.rules.RuleType.SECURITY_HOTSPOT)).isEqualTo(org.sonar.core.rule.RuleType.SECURITY_HOTSPOT);
+ assertThat(RuleTypeMapper.toRuleType(org.sonar.api.rules.RuleType.VULNERABILITY)).isEqualTo(org.sonar.core.rule.RuleType.VULNERABILITY);
+ }
+
+}
diff --git a/sonar-core/src/test/java/org/sonar/core/rule/RuleTypeTest.java b/sonar-core/src/test/java/org/sonar/core/rule/RuleTypeTest.java
new file mode 100644
index 00000000000..dd156073c9f
--- /dev/null
+++ b/sonar-core/src/test/java/org/sonar/core/rule/RuleTypeTest.java
@@ -0,0 +1,70 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.rule;
+
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+
+class RuleTypeTest {
+
+ @Test
+ void fromDbConstant_shouldReturnCorrectEnum() {
+ assertThat(RuleType.fromDbConstant(1)).isEqualTo(RuleType.CODE_SMELL);
+ assertThat(RuleType.fromDbConstant(2)).isEqualTo(RuleType.BUG);
+ assertThat(RuleType.fromDbConstant(3)).isEqualTo(RuleType.VULNERABILITY);
+ assertThat(RuleType.fromDbConstant(4)).isEqualTo(RuleType.SECURITY_HOTSPOT);
+ }
+
+ @Test
+ void fromDbConstant_shouldThrowExceptionForInvalidValue() {
+ assertThatThrownBy(() -> RuleType.fromDbConstant(99))
+ .isInstanceOf(IllegalArgumentException.class)
+ .hasMessage("Unsupported type value : 99");
+ }
+
+ @Test
+ void valueOfNullable_shouldReturnCorrectEnumOrNull() {
+ assertThat(RuleType.valueOfNullable(1)).isEqualTo(RuleType.CODE_SMELL);
+ assertThat(RuleType.valueOfNullable(0)).isNull();
+ }
+
+ @Test
+ void valueOfNullable_shouldThrowExceptionForInvalidValue() {
+ assertThatThrownBy(() -> RuleType.valueOfNullable(99))
+ .isInstanceOf(IllegalArgumentException.class)
+ .hasMessage("Unsupported type value : 99");
+ }
+
+ @Test
+ void names_shouldReturnAllEnumNames() {
+ assertThat(RuleType.names()).containsExactly("CODE_SMELL", "BUG", "VULNERABILITY", "SECURITY_HOTSPOT");
+ }
+
+ @Test
+ void getDbConstant_shouldReturnCorrectDbConstant() {
+ assertThat(RuleType.CODE_SMELL.getDbConstant()).isEqualTo(1);
+ assertThat(RuleType.BUG.getDbConstant()).isEqualTo(2);
+ assertThat(RuleType.VULNERABILITY.getDbConstant()).isEqualTo(3);
+ assertThat(RuleType.SECURITY_HOTSPOT.getDbConstant()).isEqualTo(4);
+ }
+}
diff --git a/sonar-core/src/test/java/org/sonar/core/sarif/Sarif210SerializationDeserializationTest.java b/sonar-core/src/test/java/org/sonar/core/sarif/Sarif210SerializationDeserializationTest.java
index 58941980d87..1a010d2bb92 100644
--- a/sonar-core/src/test/java/org/sonar/core/sarif/Sarif210SerializationDeserializationTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/sarif/Sarif210SerializationDeserializationTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerImplTest.java b/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerImplTest.java
index ed8e78ef1ef..59e05cf53bf 100644
--- a/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerImplTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerImplTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/scadata/DefaultScaDataSourceImplTest.java b/sonar-core/src/test/java/org/sonar/core/scadata/DefaultScaDataSourceImplTest.java
new file mode 100644
index 00000000000..08c6a38f324
--- /dev/null
+++ b/sonar-core/src/test/java/org/sonar/core/scadata/DefaultScaDataSourceImplTest.java
@@ -0,0 +1,48 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.scadata;
+
+import org.junit.Test;
+import java.util.OptionalInt;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.mock;
+
+public class DefaultScaDataSourceImplTest {
+ private final DefaultScaDataSourceImpl dataSource = mock(DefaultScaDataSourceImpl.class);
+
+ @Test
+ public void getVulnerabilityCount_defaultsToZero() {
+ String componentUuid = "component-uuid";
+
+ int vulnerabilityCount = dataSource.getVulnerabilityCount(componentUuid);
+
+ assertEquals(0, vulnerabilityCount);
+ }
+
+ @Test
+ public void getVulnerabilityRating_defaultsToEmpty() {
+ String componentUuid = "component-uuid";
+
+ OptionalInt vulnerabilityRating = dataSource.getVulnerabilityRating(componentUuid);
+
+ assertEquals(OptionalInt.empty(), vulnerabilityRating);
+ }
+}
diff --git a/sonar-core/src/test/java/org/sonar/core/util/CloseableIteratorTest.java b/sonar-core/src/test/java/org/sonar/core/util/CloseableIteratorTest.java
index a8841c4d309..fab931a3a5a 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/CloseableIteratorTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/CloseableIteratorTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/ContextExceptionTest.java b/sonar-core/src/test/java/org/sonar/core/util/ContextExceptionTest.java
index f0c3c80de39..55bde45e022 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/ContextExceptionTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/ContextExceptionTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/FileUtilsTest.java b/sonar-core/src/test/java/org/sonar/core/util/FileUtilsTest.java
index e6ad1e12fc4..75250e1e445 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/FileUtilsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/FileUtilsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/LineReaderIteratorTest.java b/sonar-core/src/test/java/org/sonar/core/util/LineReaderIteratorTest.java
index 33817abd3ff..79c02fd61fc 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/LineReaderIteratorTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/LineReaderIteratorTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/NonNullInputFunctionTest.java b/sonar-core/src/test/java/org/sonar/core/util/NonNullInputFunctionTest.java
index 1e16ab504a2..9719ff5c7a2 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/NonNullInputFunctionTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/NonNullInputFunctionTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/ProcessWrapperFactoryTest.java b/sonar-core/src/test/java/org/sonar/core/util/ProcessWrapperFactoryTest.java
new file mode 100644
index 00000000000..04627cd808c
--- /dev/null
+++ b/sonar-core/src/test/java/org/sonar/core/util/ProcessWrapperFactoryTest.java
@@ -0,0 +1,139 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2025 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.util;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.util.Map;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Consumer;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.junit.jupiter.api.io.TempDir;
+import org.slf4j.LoggerFactory;
+import org.slf4j.event.Level;
+import org.sonar.api.testfixtures.log.LogTesterJUnit5;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+class ProcessWrapperFactoryTest {
+
+ @RegisterExtension
+ private final LogTesterJUnit5 logTester = new LogTesterJUnit5();
+ private final ProcessWrapperFactory underTest = new ProcessWrapperFactory();
+
+ @Test
+ void should_log_error_output_in_debug_mode(@TempDir Path root) {
+ logTester.setLevel(Level.DEBUG);
+
+ Consumer<String> stdoutConsumer = s -> {
+ };
+ Consumer<String> stderrConsumer = LoggerFactory.getLogger(ProcessWrapperFactoryTest.class)::debug;
+ var processWrapper = underTest.create(root, stdoutConsumer, stderrConsumer, Map.of("LANG", "en_US"), "git", "blame");
+ assertThatThrownBy(processWrapper::execute)
+ .isInstanceOf(IllegalStateException.class);
+
+ assertThat(logTester.logs(Level.DEBUG).get(0)).startsWith("fatal:");
+ }
+
+ // SONAR-24376
+ @Test
+ void should_not_freeze_when_destroying_in_the_middle_of_big_stdout_stdin(@TempDir Path temp) throws IOException {
+ var bigFile = temp.resolve("stdout.txt");
+ for (int i = 0; i < 1024; i++) {
+ Files.writeString(bigFile, StringUtils.repeat("a", 1024), StandardCharsets.UTF_8, StandardOpenOption.APPEND, StandardOpenOption.CREATE);
+ Files.writeString(bigFile, "\n", StandardCharsets.UTF_8, StandardOpenOption.APPEND);
+ }
+
+ var stdoutHandler = new DestroyProcessAfter10Lines();
+ var stderrHandler = new DestroyProcessAfter10Lines();
+
+ var processWrapper = underTest.create(temp, stdoutHandler::process, stderrHandler::process,
+ SystemUtils.IS_OS_WINDOWS ? new String[] {"cmd.exe", "/c", "type stdout.txt"} : new String[] {"cat", "stdout.txt"});
+ stdoutHandler.wrapper = processWrapper;
+
+ assertThatCode(processWrapper::execute).doesNotThrowAnyException();
+ // A few lines might be processed before the process is destroyed
+ assertThat(stdoutHandler.lineCounter.get()).isGreaterThanOrEqualTo(10);
+ }
+
+ @Test
+ void should_not_deadlock_when_stream_handler_throw_exception(@TempDir Path temp) throws IOException {
+ var bigFile = temp.resolve("stdout.txt");
+ for (int i = 0; i < 1024; i++) {
+ Files.writeString(bigFile, StringUtils.repeat("a", 1024), StandardCharsets.UTF_8, StandardOpenOption.APPEND, StandardOpenOption.CREATE);
+ Files.writeString(bigFile, "\n", StandardCharsets.UTF_8, StandardOpenOption.APPEND);
+ }
+
+ var stdoutHandler = new ThrowExceptionForEveryLine();
+
+ var processWrapper = underTest.create(temp, stdoutHandler::process, l -> {
+ },
+ SystemUtils.IS_OS_WINDOWS ? new String[] {"cmd.exe", "/c", "type stdout.txt"} : new String[] {"cat", "stdout.txt"});
+
+ assertThatThrownBy(processWrapper::execute)
+ .hasMessage("Error while processing stream for command")
+ .hasCauseInstanceOf(IllegalStateException.class)
+ .hasStackTraceContaining("Some error");
+ }
+
+ @Test
+ void should_apply_env_overrides_on_top_of_parent_env(@TempDir Path temp) throws IOException {
+ ConcurrentLinkedDeque<String> logs = new ConcurrentLinkedDeque<>();
+
+ Consumer<String> stdoutHandler = logs::add;
+ Consumer<String> stderrHandler = logs::add;
+
+ var processWrapper = underTest.create(temp, stdoutHandler, stderrHandler, Map.of("FOO", "BAR"),
+ SystemUtils.IS_OS_WINDOWS ? new String[] {"cmd.exe", "/c", "echo %PATH% & echo %FOO%"} : new String[] {"/bin/bash", "-c", "echo $PATH; echo $FOO;"});
+ processWrapper.execute();
+
+ // Trim all output lines to avoid issues with trailing spaces on Windows environment variables
+ var trimmedLogs = logs.stream().map(String::trim).toList();
+ assertThat(trimmedLogs).containsExactly(System.getenv("PATH").trim(), "BAR");
+ }
+
+ private static class DestroyProcessAfter10Lines {
+ private final AtomicInteger lineCounter = new AtomicInteger();
+ private ProcessWrapperFactory.ProcessWrapper wrapper;
+
+ void process(String line) {
+ if (lineCounter.incrementAndGet() == 10) {
+ wrapper.destroy();
+ }
+ }
+ }
+
+ private static class ThrowExceptionForEveryLine {
+
+ void process(String line) {
+ throw new IllegalStateException("Some error");
+ }
+ }
+
+}
diff --git a/sonar-core/src/test/java/org/sonar/core/util/ProgressLoggerTest.java b/sonar-core/src/test/java/org/sonar/core/util/ProgressLoggerTest.java
index b5e74079625..9a09ab7db0a 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/ProgressLoggerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/ProgressLoggerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/ProtobufJsonFormatTest.java b/sonar-core/src/test/java/org/sonar/core/util/ProtobufJsonFormatTest.java
index d5721ebdcb5..97cc97910ed 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/ProtobufJsonFormatTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/ProtobufJsonFormatTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java b/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java
index 724afc7bf50..ad23eacba23 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/ResourceUtilsTest.java b/sonar-core/src/test/java/org/sonar/core/util/ResourceUtilsTest.java
index 86dafbc9da4..82d4919a17c 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/ResourceUtilsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/ResourceUtilsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/SequenceUuidFactoryTest.java b/sonar-core/src/test/java/org/sonar/core/util/SequenceUuidFactoryTest.java
index ae42c493859..614351f419a 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/SequenceUuidFactoryTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/SequenceUuidFactoryTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/SettingFormatterTest.java b/sonar-core/src/test/java/org/sonar/core/util/SettingFormatterTest.java
index 222e2c8e7fa..f7e3ad187c2 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/SettingFormatterTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/SettingFormatterTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/SlugTest.java b/sonar-core/src/test/java/org/sonar/core/util/SlugTest.java
index e2dddc36a12..1d8edfb6805 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/SlugTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/SlugTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/UtcDateUtilsTest.java b/sonar-core/src/test/java/org/sonar/core/util/UtcDateUtilsTest.java
index 0a89f6cc4a9..f633fa1d068 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/UtcDateUtilsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/UtcDateUtilsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryFastTest.java b/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryFastTest.java
index f9650b1fd56..44323414661 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryFastTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryFastTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryImplTest.java b/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryImplTest.java
index c27262886d4..1c347205f5a 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryImplTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/UuidFactoryImplTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/UuidsTest.java b/sonar-core/src/test/java/org/sonar/core/util/UuidsTest.java
index 5cc8cb65642..b38d013c624 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/UuidsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/UuidsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/issue/IssueChangedEventTest.java b/sonar-core/src/test/java/org/sonar/core/util/issue/IssueChangedEventTest.java
index 87881193597..1ee9b5e95e2 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/issue/IssueChangedEventTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/issue/IssueChangedEventTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/issue/IssueTest.java b/sonar-core/src/test/java/org/sonar/core/util/issue/IssueTest.java
index 8300ad03f52..41c17ff0045 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/issue/IssueTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/issue/IssueTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/logs/DefaultProfilerTest.java b/sonar-core/src/test/java/org/sonar/core/util/logs/DefaultProfilerTest.java
index 8b04598badd..7102631e2e1 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/logs/DefaultProfilerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/logs/DefaultProfilerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/logs/NullProfilerTest.java b/sonar-core/src/test/java/org/sonar/core/util/logs/NullProfilerTest.java
index 57adf365ac8..ed5ee5176af 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/logs/NullProfilerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/logs/NullProfilerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/logs/ProfilerTest.java b/sonar-core/src/test/java/org/sonar/core/util/logs/ProfilerTest.java
index df32b5ae49a..0ff1789e619 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/logs/ProfilerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/logs/ProfilerTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/rule/RuleChangeTest.java b/sonar-core/src/test/java/org/sonar/core/util/rule/RuleChangeTest.java
index a1f5c8119bc..a50794fd392 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/rule/RuleChangeTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/rule/RuleChangeTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/rule/RuleSetChangedEventTest.java b/sonar-core/src/test/java/org/sonar/core/util/rule/RuleSetChangedEventTest.java
index 6836e2a8849..adddebb4aa6 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/rule/RuleSetChangedEventTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/rule/RuleSetChangedEventTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
diff --git a/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java b/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java
index 06f8acc2fd4..1cbdb48c8f8 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java
@@ -1,6 +1,6 @@
/*
* SonarQube
- * Copyright (C) 2009-2024 SonarSource SA
+ * Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or