From 0bdfddeed0bf06255f61c6b59dcfc6d132598e14 Mon Sep 17 00:00:00 2001 From: Lucas Paulger Date: Tue, 11 Jun 2024 15:45:10 +0300 Subject: [PATCH] SONAR-22361 Update .NET tutorial to be consistent with SonarCloud --- .../tutorials/components/CompilationInfo.tsx | 3 +- .../__snapshots__/JenkinsTutorial-it.tsx.snap | 24 ++--- .../jenkins/buildtool-steps/DotNetCore.tsx | 2 +- .../buildtool-steps/DotNetFramework.tsx | 2 +- .../buildtool-steps/DotNetPrereqsScanner.tsx | 7 +- .../tutorials/other/DoneNextSteps.tsx | 98 ++++++++++++------- .../other/__tests__/DoneNextSteps-it.tsx | 62 ++++++++++++ .../tutorials/other/commands/DotNetCore.tsx | 2 +- .../other/commands/DotNetExecute.tsx | 9 +- .../other/commands/DotNetFramework.tsx | 8 +- .../tutorials/other/commands/ExecScanner.tsx | 2 +- .../tutorials/other/commands/JavaGradle.tsx | 2 +- .../tutorials/other/commands/JavaMaven.tsx | 2 +- .../resources/org/sonar/l10n/core.properties | 28 +++--- 14 files changed, 172 insertions(+), 79 deletions(-) create mode 100644 server/sonar-web/src/main/js/components/tutorials/other/__tests__/DoneNextSteps-it.tsx 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" /> - - + + ) { const outroRef = React.useRef(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) { {translate('onboarding.analysis.auto_refresh_after_analysis.auto_refresh')}

-

- {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')} -

- - {translate('onboarding.analysis.auto_refresh_after_analysis.check_these_links')} - -
    -
  • - - {translate( - 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.branches', - )} - -
  • + {hasLicensedEdition ? ( + <> + + {translate('onboarding.analysis.auto_refresh_after_analysis.check_these_links')} + +
      +
    • + + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.branches', + )} + +
    • -
    • - - {translate( - 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.pr_analysis', - )} - -
    • -
    +
  • + + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.pr_analysis', + )} + +
  • +
+ + ) : ( + + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.community.check_these_links.edition', + )} + + ), + branches: ( + + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.branches', + )} + + ), + pull_requests: ( + + {translate( + 'onboarding.analysis.auto_refresh_after_analysis.check_these_links.pr_analysis', + )} + + ), + }} + /> + )}
); } +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('/', , { 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) { {translate('onboarding.analysis.dotnetcore.global.text.path')} - + ); } 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) { const docUrl = useDocUrl(DocLink.SonarScannerDotNet); return ( @@ -64,7 +63,7 @@ export default function DotNetExecute({ commands, component }: DotNetExecuteProp }} />

- + ); } 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: , + code: , + path: , link: {translate('onboarding.analysis.msbuild.docs_link')}, }} />

- + ); } 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) { }} />

- + ); } 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) { }} />

- + ); } 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) { }} />

- + ); } 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} -- 2.39.5