diff options
14 files changed, 172 insertions, 79 deletions
diff --git a/server/sonar-web/src/main/js/components/tutorials/components/CompilationInfo.tsx b/server/sonar-web/src/main/js/components/tutorials/components/CompilationInfo.tsx index 199326e947d..8fb49d3c82f 100644 --- a/server/sonar-web/src/main/js/components/tutorials/components/CompilationInfo.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/components/CompilationInfo.tsx @@ -18,7 +18,8 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { FlagMessage, Link } from 'design-system'; +import { LinkStandalone as Link } from '@sonarsource/echoes-react'; +import { FlagMessage } from 'design-system'; import * as React from 'react'; import { FormattedMessage } from 'react-intl'; import { DocLink } from '../../../helpers/doc-links'; diff --git a/server/sonar-web/src/main/js/components/tutorials/jenkins/__tests__/__snapshots__/JenkinsTutorial-it.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/jenkins/__tests__/__snapshots__/JenkinsTutorial-it.tsx.snap index 5dd2df6b18d..e540489c9a7 100644 --- a/server/sonar-web/src/main/js/components/tutorials/jenkins/__tests__/__snapshots__/JenkinsTutorial-it.tsx.snap +++ b/server/sonar-web/src/main/js/components/tutorials/jenkins/__tests__/__snapshots__/JenkinsTutorial-it.tsx.snap @@ -239,7 +239,7 @@ exports[`bitbucket: can select devops platform and complete all the steps with c checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { sh "dotnet \${scannerHome}/SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" sh "dotnet build" @@ -276,7 +276,7 @@ exports[`bitbucket: can select devops platform and complete all the steps with c checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "dotnet \${scannerHome}\\\\SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" bat "dotnet build" @@ -294,7 +294,7 @@ exports[`bitbucket: can select devops platform and complete all the steps with c } stage('SonarQube Analysis') { def msbuildHome = tool 'Default MSBuild' - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "\\"\${scannerHome}\\\\SonarScanner.MSBuild.exe\\" begin /k:\\"my-project\\"" bat "\\"\${msbuildHome}\\\\MSBuild.exe\\" /t:Rebuild" @@ -544,7 +544,7 @@ exports[`bitbucketcloud: can select devops platform and complete all the steps w checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { sh "dotnet \${scannerHome}/SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" sh "dotnet build" @@ -581,7 +581,7 @@ exports[`bitbucketcloud: can select devops platform and complete all the steps w checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "dotnet \${scannerHome}\\\\SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" bat "dotnet build" @@ -599,7 +599,7 @@ exports[`bitbucketcloud: can select devops platform and complete all the steps w } stage('SonarQube Analysis') { def msbuildHome = tool 'Default MSBuild' - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "\\"\${scannerHome}\\\\SonarScanner.MSBuild.exe\\" begin /k:\\"my-project\\"" bat "\\"\${msbuildHome}\\\\MSBuild.exe\\" /t:Rebuild" @@ -849,7 +849,7 @@ exports[`github: can select devops platform and complete all the steps with copy checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { sh "dotnet \${scannerHome}/SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" sh "dotnet build" @@ -886,7 +886,7 @@ exports[`github: can select devops platform and complete all the steps with copy checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "dotnet \${scannerHome}\\\\SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" bat "dotnet build" @@ -904,7 +904,7 @@ exports[`github: can select devops platform and complete all the steps with copy } stage('SonarQube Analysis') { def msbuildHome = tool 'Default MSBuild' - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "\\"\${scannerHome}\\\\SonarScanner.MSBuild.exe\\" begin /k:\\"my-project\\"" bat "\\"\${msbuildHome}\\\\MSBuild.exe\\" /t:Rebuild" @@ -1154,7 +1154,7 @@ exports[`gitlab: can select devops platform and complete all the steps with copy checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { sh "dotnet \${scannerHome}/SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" sh "dotnet build" @@ -1191,7 +1191,7 @@ exports[`gitlab: can select devops platform and complete all the steps with copy checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "dotnet \${scannerHome}\\\\SonarScanner.MSBuild.dll begin /k:\\"my-project\\"" bat "dotnet build" @@ -1209,7 +1209,7 @@ exports[`gitlab: can select devops platform and complete all the steps with copy } stage('SonarQube Analysis') { def msbuildHome = tool 'Default MSBuild' - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "\\"\${scannerHome}\\\\SonarScanner.MSBuild.exe\\" begin /k:\\"my-project\\"" bat "\\"\${msbuildHome}\\\\MSBuild.exe\\" /t:Rebuild" diff --git a/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetCore.tsx b/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetCore.tsx index 61287f945f1..111a36ef891 100644 --- a/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetCore.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetCore.tsx @@ -34,7 +34,7 @@ const jenkinsfileSnippet = (key: string, shell: OSDotNet) => `node { checkout scm } stage('SonarQube Analysis') { - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { ${OSS_DEP[shell].shell} "dotnet \${scannerHome}${OSS_DEP[shell].pathSeparator}SonarScanner.MSBuild.dll begin /k:\\"${key}\\"" ${OSS_DEP[shell].shell} "dotnet build" diff --git a/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetFramework.tsx b/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetFramework.tsx index d16cf1f323d..e4a744adcc4 100644 --- a/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetFramework.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetFramework.tsx @@ -30,7 +30,7 @@ const jenkinsfileSnippet = (key: string) => `node { } stage('SonarQube Analysis') { def msbuildHome = tool 'Default MSBuild' - def scannerHome = tool 'SonarScanner for MSBuild' + def scannerHome = tool 'SonarScanner for .NET' withSonarQubeEnv() { bat "\\"\${scannerHome}\\\\SonarScanner.MSBuild.exe\\" begin /k:\\"${key}\\"" bat "\\"\${msbuildHome}\\\\MSBuild.exe\\" /t:Rebuild" diff --git a/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetPrereqsScanner.tsx b/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetPrereqsScanner.tsx index 1a1469c1733..702613124bf 100644 --- a/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetPrereqsScanner.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetPrereqsScanner.tsx @@ -58,11 +58,8 @@ export default function DotNetPrereqsScanner() { highlightKeys={['name']} translationKey="onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step3" /> - <InlineSnippet className="sw-ml-1" snippet="SonarScanner for MSBuild" /> - <ClipboardIconButton - className="sw-ml-2 sw-align-sub" - copyValue="SonarScanner for MSBuild" - /> + <InlineSnippet className="sw-ml-1" snippet="SonarScanner for .NET" /> + <ClipboardIconButton className="sw-ml-2 sw-align-sub" copyValue="SonarScanner for .NET" /> </ListItem> <ListItem> <SentenceWithHighlights diff --git a/server/sonar-web/src/main/js/components/tutorials/other/DoneNextSteps.tsx b/server/sonar-web/src/main/js/components/tutorials/other/DoneNextSteps.tsx index f97fca6d662..141f04dc95e 100644 --- a/server/sonar-web/src/main/js/components/tutorials/other/DoneNextSteps.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/other/DoneNextSteps.tsx @@ -20,22 +20,25 @@ import styled from '@emotion/styled'; import { animated, config, useSpring } from '@react-spring/web'; -import { BasicSeparator, FlagVisual, Link } from 'design-system'; +import { LinkStandalone as Link } from '@sonarsource/echoes-react'; +import { BasicSeparator, FlagVisual } from 'design-system'; import * as React from 'react'; +import { FormattedMessage } from 'react-intl'; +import withAppStateContext from '../../../app/components/app-state/withAppStateContext'; import { DocLink } from '../../../helpers/doc-links'; import { useDocUrl } from '../../../helpers/docs'; import { translate } from '../../../helpers/l10n'; import useIntersectionObserver from '../../../hooks/useIntersectionObserver'; -import { Component } from '../../../types/types'; +import { AppState } from '../../../types/appstate'; +import { EditionKey } from '../../../types/editions'; -export interface DoneNextStepsProps { - component: Component; +export interface Props { + appState: AppState; } -export default function DoneNextSteps({ component }: DoneNextStepsProps) { - const isProjectAdmin = component.configuration?.showSettings; +function DoneNextSteps({ appState }: Readonly<Props>) { const outroRef = React.useRef<HTMLDivElement>(null); - + const hasLicensedEdition = appState.edition && appState.edition !== EditionKey.community; const intersectionEntry = useIntersectionObserver(outroRef, { freezeOnceVisible: true }); const outroAnimation = useSpring({ @@ -64,40 +67,69 @@ export default function DoneNextSteps({ component }: DoneNextStepsProps) { </strong> {translate('onboarding.analysis.auto_refresh_after_analysis.auto_refresh')} </p> - <p className="sw-mt-4"> - {isProjectAdmin - ? translate( - 'onboarding.analysis.auto_refresh_after_analysis.set_up_pr_deco_and_ci.admin', - ) - : translate('onboarding.analysis.auto_refresh_after_analysis.set_up_pr_deco_and_ci')} - </p> <div className="sw-mt-4"> - <span> - {translate('onboarding.analysis.auto_refresh_after_analysis.check_these_links')} - </span> - <ul className="sw-flex sw-flex-col sw-gap-2 sw-mt-2"> - <li> - <Link to={docUrl(DocLink.BranchAnalysis)}> - {translate( - 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.branches', - )} - </Link> - </li> + {hasLicensedEdition ? ( + <> + <span> + {translate('onboarding.analysis.auto_refresh_after_analysis.check_these_links')} + </span> + <ul className="sw-flex sw-flex-col sw-gap-2 sw-mt-2"> + <li> + <Link to={docUrl(DocLink.BranchAnalysis)}> + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.branches', + )} + </Link> + </li> - <li> - <Link to={docUrl(DocLink.PullRequestAnalysis)}> - {translate( - 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.pr_analysis', - )} - </Link> - </li> - </ul> + <li> + <Link to={docUrl(DocLink.PullRequestAnalysis)}> + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.pr_analysis', + )} + </Link> + </li> + </ul> + </> + ) : ( + <FormattedMessage + defaultMessage={translate( + 'onboarding.analysis.auto_refresh_after_analysis.community.check_these_links', + )} + id="onboarding.analysis.auto_refresh_after_analysis.community.check_these_links" + values={{ + edition: ( + <Link to="https://www.sonarsource.com/plans-and-pricing/developer/"> + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.community.check_these_links.edition', + )} + </Link> + ), + branches: ( + <Link to={docUrl(DocLink.BranchAnalysis)}> + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.branches', + )} + </Link> + ), + pull_requests: ( + <Link to={docUrl(DocLink.PullRequestAnalysis)}> + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.pr_analysis', + )} + </Link> + ), + }} + /> + )} </div> </StyledDiv> </animated.div> ); } +export default withAppStateContext(DoneNextSteps); + const StyledDiv = styled.div` width: 840px; margin: auto; diff --git a/server/sonar-web/src/main/js/components/tutorials/other/__tests__/DoneNextSteps-it.tsx b/server/sonar-web/src/main/js/components/tutorials/other/__tests__/DoneNextSteps-it.tsx new file mode 100644 index 00000000000..eabfd98ff04 --- /dev/null +++ b/server/sonar-web/src/main/js/components/tutorials/other/__tests__/DoneNextSteps-it.tsx @@ -0,0 +1,62 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 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. + */ + +import React from 'react'; +import { byRole, byText } from '~sonar-aligned/helpers/testSelector'; +import { mockAppState } from '../../../../helpers/testMocks'; +import { renderApp } from '../../../../helpers/testReactTestingUtils'; +import { EditionKey } from '../../../../types/editions'; +import DoneNextSteps from '../DoneNextSteps'; + +const ui = { + analysisDone: byText('onboarding.analysis.auto_refresh_after_analysis.done'), + autoRefresh: byText('onboarding.analysis.auto_refresh_after_analysis.auto_refresh'), + licensedNextStep: byText('onboarding.analysis.auto_refresh_after_analysis.check_these_links'), + communityNextStep: byText( + 'onboarding.analysis.auto_refresh_after_analysis.community.check_these_links', + ), + nextStepLinks: byRole('link'), +}; + +describe('Community Edition', () => { + it('should inform the user about available next steps', async () => { + renderDoneNextSteps(); + + expect(await ui.analysisDone.find()).toBeInTheDocument(); + expect(await ui.autoRefresh.find()).toBeInTheDocument(); + expect(await ui.communityNextStep.find()).toBeInTheDocument(); + expect(await ui.nextStepLinks.findAll()).toHaveLength(3); + }); +}); + +describe('Licensed Edition', () => { + it('should inform the user about available next steps', async () => { + renderDoneNextSteps(mockAppState({ edition: EditionKey.enterprise })); + + expect(await ui.analysisDone.find()).toBeInTheDocument(); + expect(await ui.autoRefresh.find()).toBeInTheDocument(); + expect(await ui.licensedNextStep.find()).toBeInTheDocument(); + expect(await ui.nextStepLinks.findAll()).toHaveLength(2); + }); +}); + +function renderDoneNextSteps(appState = mockAppState()) { + return renderApp('/', <DoneNextSteps />, { appState }); +} diff --git a/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetCore.tsx b/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetCore.tsx index c174c50054b..c48c32e4dbe 100644 --- a/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetCore.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetCore.tsx @@ -46,7 +46,7 @@ export default function DotNetCore(props: DotNetProps) { <FlagMessage className="sw-mt-2" variant="info"> {translate('onboarding.analysis.dotnetcore.global.text.path')} </FlagMessage> - <DotNetExecute commands={commands} component={component} /> + <DotNetExecute commands={commands} /> </div> ); } diff --git a/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetExecute.tsx b/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetExecute.tsx index ca6335d88d2..feaffb6accb 100644 --- a/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetExecute.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetExecute.tsx @@ -18,22 +18,21 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { CodeSnippet, Link, SubHeading } from 'design-system'; +import { LinkStandalone as Link } from '@sonarsource/echoes-react'; +import { CodeSnippet, SubHeading } from 'design-system'; import * as React from 'react'; import { FormattedMessage } from 'react-intl'; import { DocLink } from '../../../../helpers/doc-links'; import { useDocUrl } from '../../../../helpers/docs'; import { translate } from '../../../../helpers/l10n'; -import { Component } from '../../../../types/types'; import InstanceMessage from '../../../common/InstanceMessage'; import DoneNextSteps from '../DoneNextSteps'; export interface DotNetExecuteProps { commands: string[]; - component: Component; } -export default function DotNetExecute({ commands, component }: DotNetExecuteProps) { +export default function DotNetExecute({ commands }: Readonly<DotNetExecuteProps>) { const docUrl = useDocUrl(DocLink.SonarScannerDotNet); return ( @@ -64,7 +63,7 @@ export default function DotNetExecute({ commands, component }: DotNetExecuteProp }} /> </p> - <DoneNextSteps component={component} /> + <DoneNextSteps /> </> ); } diff --git a/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetFramework.tsx b/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetFramework.tsx index fd9ef57f29b..63258d75f16 100644 --- a/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetFramework.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/other/commands/DotNetFramework.tsx @@ -18,7 +18,8 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { Link, SubHeading } from 'design-system'; +import { LinkStandalone as Link } from '@sonarsource/echoes-react'; +import { SubHeading } from 'design-system'; import * as React from 'react'; import { FormattedMessage } from 'react-intl'; import { DocLink } from '../../../../helpers/doc-links'; @@ -50,14 +51,15 @@ export default function DotNetFramework(props: DotNetProps) { defaultMessage={translate('onboarding.analysis.msbuild.text')} id="onboarding.analysis.msbuild.text" values={{ - code: <InlineSnippet snippet="%PATH%" />, + code: <InlineSnippet snippet="SonarScanner.MSBuild.exe" />, + path: <InlineSnippet snippet="%PATH%" />, link: <Link to={docUrl}>{translate('onboarding.analysis.msbuild.docs_link')}</Link>, }} /> </p> </div> - <DotNetExecute commands={commands} component={component} /> + <DotNetExecute commands={commands} /> </div> ); } diff --git a/server/sonar-web/src/main/js/components/tutorials/other/commands/ExecScanner.tsx b/server/sonar-web/src/main/js/components/tutorials/other/commands/ExecScanner.tsx index 5a1d49f1384..d59b4006abb 100644 --- a/server/sonar-web/src/main/js/components/tutorials/other/commands/ExecScanner.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/other/commands/ExecScanner.tsx @@ -74,7 +74,7 @@ export default function ExecScanner(props: ExecScannerProps) { }} /> </p> - <DoneNextSteps component={component} /> + <DoneNextSteps /> </div> ); } diff --git a/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaGradle.tsx b/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaGradle.tsx index 21270d3a3d8..b37180da5ad 100644 --- a/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaGradle.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaGradle.tsx @@ -117,7 +117,7 @@ export default function JavaGradle(props: JavaGradleProps) { }} /> </p> - <DoneNextSteps component={component} /> + <DoneNextSteps /> </div> ); } diff --git a/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaMaven.tsx b/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaMaven.tsx index 8b51d1b33fa..df8f19ce85e 100644 --- a/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaMaven.tsx +++ b/server/sonar-web/src/main/js/components/tutorials/other/commands/JavaMaven.tsx @@ -64,7 +64,7 @@ export default function JavaMaven(props: JavaMavenProps) { }} /> </p> - <DoneNextSteps component={component} /> + <DoneNextSteps /> </div> ); } 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 92a15722ac3..345ead34233 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -4536,11 +4536,11 @@ onboarding.tutorial.env_variables.token_generator.value=an existing token, or a onboarding.analysis.header=Run analysis on your project onboarding.analysis.auto_refresh_after_analysis.done=Is my analysis done? onboarding.analysis.auto_refresh_after_analysis.auto_refresh=If your analysis is successful, this page will automatically refresh in a few moments. -onboarding.analysis.auto_refresh_after_analysis.set_up_pr_deco_and_ci.admin=You can set up Pull Request Decoration under the project settings. To set up analysis with your favorite CI tool, see the tutorials. -onboarding.analysis.auto_refresh_after_analysis.set_up_pr_deco_and_ci=You can request from a project administrator to set up Pull Request Decoration. To set up analysis with your favorite CI tool, see the tutorials. -onboarding.analysis.auto_refresh_after_analysis.check_these_links=Check these useful links while you wait: +onboarding.analysis.auto_refresh_after_analysis.check_these_links=While you're waiting, check out these links to learn how to configure Branch Analysis and Pull Request Analysis: onboarding.analysis.auto_refresh_after_analysis.check_these_links.pr_analysis=Pull Request Analysis onboarding.analysis.auto_refresh_after_analysis.check_these_links.branches=Branch Analysis +onboarding.analysis.auto_refresh_after_analysis.community.check_these_links=While you're waiting, why not consider upgrading to our {edition}? It offers additional features such as {branches} and {pull_requests}. +onboarding.analysis.auto_refresh_after_analysis.community.check_these_links.edition=Developer Edition onboarding.build=What option best describes your project? onboarding.build.maven=Maven @@ -4554,7 +4554,7 @@ onboarding.build.cpp=C or C++ onboarding.build.objectivec=Objective-C onboarding.build.other=Other (for JS, TS, Go, Python, PHP, ...) -onboarding.build.dotnet.variant=Choose your build tool +onboarding.build.dotnet.variant=Which framework do you use? onboarding.build.dotnet.variant.dotnet_core=.NET Core onboarding.build.dotnet.variant.dotnet_framework=.NET Framework @@ -4592,18 +4592,18 @@ onboarding.analysis.java.gradle.text.2=and run the following command: onboarding.analysis.java.gradle.latest_version=You can find the latest version of the Gradle plugin {link}. onboarding.analysis.java.gradle.docs_link=official documentation of the Scanner for Gradle -onboarding.analysis.msbuild.header=Download and unzip the Scanner for .NET -onboarding.analysis.msbuild.text=Visit the {link} to download the latest version, and add the executable's directory to the {code} environment variable -onboarding.analysis.msbuild.execute=Execute the Scanner for .NET -onboarding.analysis.msbuild.execute.text=Running a {instance} analysis is straighforward. You just need to execute the following commands at the root of your solution. -onboarding.analysis.msbuild.docs_link=official documentation of the Scanner for .NET +onboarding.analysis.msbuild.header=Download and unzip the SonarScanner for .NET +onboarding.analysis.msbuild.text=Visit the {link} to download the latest version for .NET framework. Make sure to add the directory containing {code} to the {path} environment variable. +onboarding.analysis.msbuild.execute=Execute the SonarScanner for .NET +onboarding.analysis.msbuild.execute.text=Running a {instance} analysis is straightforward. You just need to execute the following commands at the root of your solution. +onboarding.analysis.msbuild.docs_link=documentation of the SonarScanner for .NET onboarding.analysis.sq_scanner.header.linux=Download and unzip the Scanner for Linux onboarding.analysis.sq_scanner.header.win=Download and unzip the Scanner for Windows onboarding.analysis.sq_scanner.header.mac=Download and unzip the Scanner for macOS onboarding.analysis.sq_scanner.text=Visit the {link} to download the latest version, and add the {dir} directory to the {env_var} environment variable onboarding.analysis.sq_scanner.execute=Execute the Scanner -onboarding.analysis.sq_scanner.execute.text=Running a {instance} analysis is straighforward. You just need to execute the following commands in your project's folder. +onboarding.analysis.sq_scanner.execute.text=Running a {instance} analysis is straightforward. You just need to execute the following commands in your project's folder. onboarding.analysis.sq_scanner.execute.text.custom=Run the following commands in your project's folder. onboarding.analysis.sq_scanner.docs=Please visit the {link} for more details. onboarding.analysis.sq_scanner.docs_use_case=Please visit the {link} for more details, and the {useCaseLink} to know more about this use case. @@ -4614,7 +4614,7 @@ onboarding.analysis.sq_scanner.sonar_token_env.var_value=Give it the following v onboarding.analysis.sqscanner.docs.gradle.title=official documentation of the Scanner for Gradle onboarding.analysis.sqscanner.docs.gradle.example_project.title=live Gradle-based example project -onboarding.analysis.dotnetcore.global=Scanner .NET Core Global Tool +onboarding.analysis.dotnetcore.global=Install the SonarScanner .NET Core Global Tool onboarding.analysis.dotnetcore.global.text=As a prerequisite you need to have the sonarscanner tool installed globally using the following command: onboarding.analysis.dotnetcore.global.text.path=Make sure dotnet tools folder is in your path. See dotnet global tools documentation for more information. @@ -4939,13 +4939,13 @@ onboarding.tutorial.with.jenkins.dotnet.msbuild.prereqs.step3.sentence.name=Name onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.title.sentence=Prerequisite: Add a {default_scanner} tool. -onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.title.sentence.default_scanner=SonarScanner for MSBuild +onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.title.sentence.default_scanner=SonarScanner for .NET onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.info=This step needs to be done only once per jenkins instance or if you need different scanner versions. onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step1.sentence=In Jenkins, navigate to {path}. onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step1.sentence.path=Manage Jenkins > Global Tool Configuration onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step2.sentence=Under {default_scanner} click on {add_scanner_for_msbuild}. -onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step2.sentence.default_scanner=SonarScanner for MSBuild -onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step2.sentence.add_scanner_for_msbuild=Add SonarScanner for MSBuild +onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step2.sentence.default_scanner=SonarScanner for .NET +onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step2.sentence.add_scanner_for_msbuild=Add SonarScanner for .NET onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step3.sentence=Choose a {name} that will be used in the last step: onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step3.sentence.name=Name onboarding.tutorial.with.jenkins.dotnet.scanner.prereqs.step4.sentence=Check {install_auto} |