From c56d00ae68483a0c3bfda8637f4b66c1f377c502 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gr=C3=A9goire=20Aubert?= Date: Thu, 3 May 2018 17:13:04 +0200 Subject: [PATCH] SONAR-10656 Remove SonarQube occurences when SonarCloud is enabled --- .../main/js/app/components/GlobalFooter.tsx | 5 +- .../__snapshots__/GlobalFooter-test.tsx.snap | 4 +- .../settings/PendingPluginsActionNotif.tsx | 5 +- .../PendingPluginsActionNotif-test.tsx.snap | 4 +- .../js/apps/account/components/Tokens.tsx | 3 +- .../__snapshots__/Tokens-test.tsx.snap | 4 +- .../components/RuleDetailsProfiles.tsx | 9 +-- .../components/OrganizationDelete.tsx | 6 +- .../OrganizationDelete-test.tsx.snap | 8 ++- .../components/ListHeader.js | 5 +- .../shared/components/PermissionHeader.tsx | 5 +- .../js/apps/settings/components/PageHeader.js | 9 ++- .../apps/tutorials/onboarding/Onboarding.js | 13 +++-- .../__snapshots__/Onboarding-test.js.snap | 55 +++++++++--------- .../onboarding/commands/JavaGradle.js | 13 +++-- .../onboarding/commands/JavaMaven.js | 5 +- .../__snapshots__/JavaGradle-test.js.snap | 18 ++---- .../__snapshots__/JavaMaven-test.js.snap | 8 ++- .../js/components/common/InstanceMessage.tsx | 48 ++++++++++++++++ .../common/__tests__/InstanceMessage-test.tsx | 50 +++++++++++++++++ .../resources/org/sonar/l10n/core.properties | 56 +++++++++---------- 21 files changed, 224 insertions(+), 109 deletions(-) create mode 100644 server/sonar-web/src/main/js/components/common/InstanceMessage.tsx create mode 100644 server/sonar-web/src/main/js/components/common/__tests__/InstanceMessage-test.tsx diff --git a/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx b/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx index eacbe1883b0..5baa8f12be9 100644 --- a/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx +++ b/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx @@ -22,6 +22,7 @@ import * as PropTypes from 'prop-types'; import { Link } from 'react-router'; import GlobalFooterSonarCloud from './GlobalFooterSonarCloud'; import GlobalFooterBranding from './GlobalFooterBranding'; +import InstanceMessage from '../../components/common/InstanceMessage'; import { translate, translateWithParameters } from '../../helpers/l10n'; interface Props { @@ -48,7 +49,9 @@ export default class GlobalFooter extends React.PureComponent {

{translate('footer.production_database_warning')}

-

{translate('footer.production_database_explanation')}

+

+ +

)} diff --git a/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap b/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap index b7069f5b1cb..7b42faddf53 100644 --- a/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap +++ b/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap @@ -236,7 +236,9 @@ exports[`should show the db warning message 1`] = ` footer.production_database_warning

- footer.production_database_explanation +

`; diff --git a/server/sonar-web/src/main/js/app/components/nav/settings/PendingPluginsActionNotif.tsx b/server/sonar-web/src/main/js/app/components/nav/settings/PendingPluginsActionNotif.tsx index 72658160bfb..5f475b3d27a 100644 --- a/server/sonar-web/src/main/js/app/components/nav/settings/PendingPluginsActionNotif.tsx +++ b/server/sonar-web/src/main/js/app/components/nav/settings/PendingPluginsActionNotif.tsx @@ -19,11 +19,12 @@ */ import * as React from 'react'; import { FormattedMessage } from 'react-intl'; +import InstanceMessage from '../../../../components/common/InstanceMessage'; +import NavBarNotif from '../../../../components/nav/NavBarNotif'; import RestartForm from '../../../../components/common/RestartForm'; import { cancelPendingPlugins, PluginPendingResult } from '../../../../api/plugins'; import { Button } from '../../../../components/ui/buttons'; import { translate } from '../../../../helpers/l10n'; -import NavBarNotif from '../../../../components/nav/NavBarNotif'; interface Props { pending: PluginPendingResult; @@ -59,7 +60,7 @@ export default class PendingPluginsActionNotif extends React.PureComponent - {translate('marketplace.sonarqube_needs_to_be_restarted_to')} + {[ { length: installing.length, msg: 'marketplace.install_x_plugins' }, diff --git a/server/sonar-web/src/main/js/app/components/nav/settings/__tests__/__snapshots__/PendingPluginsActionNotif-test.tsx.snap b/server/sonar-web/src/main/js/app/components/nav/settings/__tests__/__snapshots__/PendingPluginsActionNotif-test.tsx.snap index 2a461de7565..404b2a96734 100644 --- a/server/sonar-web/src/main/js/app/components/nav/settings/__tests__/__snapshots__/PendingPluginsActionNotif-test.tsx.snap +++ b/server/sonar-web/src/main/js/app/components/nav/settings/__tests__/__snapshots__/PendingPluginsActionNotif-test.tsx.snap @@ -7,7 +7,9 @@ exports[`should display pending actions 1`] = ` - marketplace.sonarqube_needs_to_be_restarted_to + {translate('users.tokens')}
- {translate('my_account.tokens_description')} +
diff --git a/server/sonar-web/src/main/js/apps/account/components/__tests__/__snapshots__/Tokens-test.tsx.snap b/server/sonar-web/src/main/js/apps/account/components/__tests__/__snapshots__/Tokens-test.tsx.snap index f495a2fa244..e7bd83f8209 100644 --- a/server/sonar-web/src/main/js/apps/account/components/__tests__/__snapshots__/Tokens-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/account/components/__tests__/__snapshots__/Tokens-test.tsx.snap @@ -13,7 +13,9 @@ exports[`renders 1`] = `
- my_account.tokens_description +

- {translate('coding_rules.quality_profiles')} +

{canActivate && ( diff --git a/server/sonar-web/src/main/js/apps/organizations/components/OrganizationDelete.tsx b/server/sonar-web/src/main/js/apps/organizations/components/OrganizationDelete.tsx index e68bb78f79c..bdc610e13d3 100644 --- a/server/sonar-web/src/main/js/apps/organizations/components/OrganizationDelete.tsx +++ b/server/sonar-web/src/main/js/apps/organizations/components/OrganizationDelete.tsx @@ -22,6 +22,7 @@ import * as PropTypes from 'prop-types'; import Helmet from 'react-helmet'; import { connect } from 'react-redux'; import ConfirmButton from '../../../components/controls/ConfirmButton'; +import InstanceMessage from '../../../components/common/InstanceMessage'; import { translate } from '../../../helpers/l10n'; import { deleteOrganization } from '../actions'; import { Organization } from '../../../app/types'; @@ -87,7 +88,6 @@ export class OrganizationDelete extends React.PureComponent { render() { const { hasPaidPlan } = this.state; - const { onSonarCloud } = this.context; const title = translate('organization.delete'); return ( <> @@ -96,9 +96,7 @@ export class OrganizationDelete extends React.PureComponent {

{title}

- {onSonarCloud - ? translate('organization.delete.description.sonarcloud') - : translate('organization.delete.description')} +
- organization.delete.description.sonarcloud +
- organization.delete.description + permission.key === 'user' || permission.key === 'codeviewer' ? (
- {translate('projects_role', permission.key, 'desc')} +
{translate('projects_role.public_projects_warning')}
) : ( - translate('projects_role', permission.key, 'desc') + ); render() { diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx b/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx index 07d1787fded..0c3a6f6865a 100644 --- a/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx +++ b/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx @@ -19,6 +19,7 @@ */ import * as React from 'react'; import HelpTooltip from '../../../../components/controls/HelpTooltip'; +import InstanceMessage from '../../../../components/common/InstanceMessage'; import Tooltip from '../../../../components/controls/Tooltip'; import { translate, translateWithParameters } from '../../../../helpers/l10n'; @@ -46,14 +47,14 @@ export default class PermissionHeader extends React.PureComponent { if (this.props.showPublicProjectsWarning && ['user', 'codeviewer'].includes(permission.key)) { return (
- {permission.description} +
{translate('projects_role.public_projects_warning')}
); } - return permission.description; + return ; }; render() { diff --git a/server/sonar-web/src/main/js/apps/settings/components/PageHeader.js b/server/sonar-web/src/main/js/apps/settings/components/PageHeader.js index d1e1ff72682..77e21d06141 100644 --- a/server/sonar-web/src/main/js/apps/settings/components/PageHeader.js +++ b/server/sonar-web/src/main/js/apps/settings/components/PageHeader.js @@ -20,6 +20,7 @@ // @flow import React from 'react'; import PropTypes from 'prop-types'; +import InstanceMessage from '../../../components/common/InstanceMessage'; import { translate } from '../../../helpers/l10n'; export default class PageHeader extends React.PureComponent { @@ -34,9 +35,11 @@ export default class PageHeader extends React.PureComponent { : translate('settings.page'); const description = - this.props.component != null - ? translate('project_settings.page.description') - : translate('settings.page.description'); + this.props.component != null ? ( + translate('project_settings.page.description') + ) : ( + + ); return (
diff --git a/server/sonar-web/src/main/js/apps/tutorials/onboarding/Onboarding.js b/server/sonar-web/src/main/js/apps/tutorials/onboarding/Onboarding.js index f85eb470a9d..2b7e5f2bca5 100644 --- a/server/sonar-web/src/main/js/apps/tutorials/onboarding/Onboarding.js +++ b/server/sonar-web/src/main/js/apps/tutorials/onboarding/Onboarding.js @@ -25,10 +25,11 @@ import TokenStep from './TokenStep'; import OrganizationStep from './OrganizationStep'; import AnalysisStep from './AnalysisStep'; import ProjectWatcher from './ProjectWatcher'; +import InstanceMessage from '../../../components/common/InstanceMessage'; +import handleRequiredAuthentication from '../../../app/utils/handleRequiredAuthentication'; import { skipOnboarding } from '../../../api/users'; import { translate, translateWithParameters } from '../../../helpers/l10n'; import { getProjectUrl } from '../../../helpers/urls'; -import handleRequiredAuthentication from '../../../app/utils/handleRequiredAuthentication'; import './styles.css'; /*:: @@ -148,15 +149,17 @@ export default class Onboarding extends React.PureComponent { let stepNumber = 1; - const header = translate(sonarCloud ? 'onboarding.header.sonarcloud' : 'onboarding.header'); - return (
- + + {transformedMessage => } +
-

{header}

+

+ +

{this.state.skipping ? ( diff --git a/server/sonar-web/src/main/js/apps/tutorials/onboarding/__tests__/__snapshots__/Onboarding-test.js.snap b/server/sonar-web/src/main/js/apps/tutorials/onboarding/__tests__/__snapshots__/Onboarding-test.js.snap index 57a706a0d5d..373e5949514 100644 --- a/server/sonar-web/src/main/js/apps/tutorials/onboarding/__tests__/__snapshots__/Onboarding-test.js.snap +++ b/server/sonar-web/src/main/js/apps/tutorials/onboarding/__tests__/__snapshots__/Onboarding-test.js.snap @@ -4,11 +4,8 @@ exports[`guides for on-premise 1`] = `
-
- onboarding.header +
-
- onboarding.header +
-
- onboarding.header.sonarcloud +
-
- onboarding.header.sonarcloud +
-
- onboarding.header.sonarcloud +

{translate('onboarding.analysis.java.gradle.header')}

-

+ + {transformedMessage => ( +

+ )} +

{translate('onboarding.analysis.java.gradle.text.2')} diff --git a/server/sonar-web/src/main/js/apps/tutorials/onboarding/commands/JavaMaven.js b/server/sonar-web/src/main/js/apps/tutorials/onboarding/commands/JavaMaven.js index a54a97e1443..8a02fb75630 100644 --- a/server/sonar-web/src/main/js/apps/tutorials/onboarding/commands/JavaMaven.js +++ b/server/sonar-web/src/main/js/apps/tutorials/onboarding/commands/JavaMaven.js @@ -20,6 +20,7 @@ // @flow import React from 'react'; import CodeSnippet from '../../../../components/common/CodeSnippet'; +import InstanceMessage from '../../../../components/common/InstanceMessage'; import { translate } from '../../../../helpers/l10n'; /*:: @@ -41,7 +42,9 @@ export default function JavaMaven(props /*: Props */) { return (

{translate('onboarding.analysis.java.maven.header')}

-

{translate('onboarding.analysis.java.maven.text')}

+

+ +

onboarding.analysis.java.gradle.header -

- onboarding.analysis.java.maven.text +

- onboarding.analysis.java.maven.text +

React.ReactNode; + message: string; +} + +const InstanceMessage: React.SFC = ( + { children, message }: Props, + context: { onSonarCloud: boolean } +) => { + const transformedMessage = message.replace( + /\{instance\}/gim, + context.onSonarCloud ? 'SonarCloud' : 'SonarQube' + ); + + if (children) { + return children(transformedMessage); + } + + return transformedMessage as any; +}; + +InstanceMessage.contextTypes = { + onSonarCloud: PropTypes.bool +}; + +export default InstanceMessage; diff --git a/server/sonar-web/src/main/js/components/common/__tests__/InstanceMessage-test.tsx b/server/sonar-web/src/main/js/components/common/__tests__/InstanceMessage-test.tsx new file mode 100644 index 00000000000..482d988b92e --- /dev/null +++ b/server/sonar-web/src/main/js/components/common/__tests__/InstanceMessage-test.tsx @@ -0,0 +1,50 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 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 * as React from 'react'; +import { shallow } from 'enzyme'; +import InstanceMessage from '../InstanceMessage'; + +it('should replace {instance} with "SonarQube"', () => { + const childFunc = jest.fn(); + getWrapper(childFunc, 'foo {instance} bar'); + expect(childFunc).toHaveBeenCalledWith('foo SonarQube bar'); +}); + +it('should replace {instance} with "SonarCloud"', () => { + const childFunc = jest.fn(); + getWrapper(childFunc, 'foo {instance} bar', true); + expect(childFunc).toHaveBeenCalledWith('foo SonarCloud bar'); +}); + +it('should return the same message', () => { + const childFunc = jest.fn(); + getWrapper(childFunc, 'no instance to replace'); + expect(childFunc).toHaveBeenCalledWith('no instance to replace'); +}); + +function getWrapper( + children: (msg: string) => React.ReactNode, + message: string, + onSonarCloud = false +) { + return shallow({children}, { + context: { onSonarCloud } + }); +} 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 9d48f94d81c..824627768bf 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -483,7 +483,7 @@ project_links.page=Links project_links.page.description=Edit some links associated with this project. projects_management.page.description=Use this page to delete multiple projects at once, or to provision projects if you would like to configure them before the first analysis. Note that once a project is provisioned, you have access to perform all project configurations on it. settings.page=General Settings -settings.page.description=Edit global settings for this SonarQube instance. +settings.page.description=Edit global settings for this {instance} instance. system_info.page=System Info project_quality_profiles.page=Quality Profiles project_quality_profiles.page.description=Choose which profile is associated with this project on a language-by-language basis. (Note that you will only need to select profiles for multiple languages for multi-language projects.) @@ -1249,7 +1249,7 @@ coding_rules.parameter.empty=(empty) coding_rules.parameters=Parameters coding_rules.parameters.default_value=Default Value: coding_rules.quality_profiles=Quality Profiles -coding_rules.quality_profiles.template_caption=This rule template was activated on the following profiles in previous versions of SonarQube. It is not possible anymore to do so. Instead, please create a custom rule. +coding_rules.quality_profiles.template_caption=This rule template was activated on the following profiles in previous versions of {instance}. It is not possible anymore to do so. Instead, please create a custom rule. coding_rules.quality_profile=Quality Profile coding_rules.reactivate=Reactivate coding_rules.reactivate.help=A rule with the same key has been previously deleted. Please reactivate the existing rule or modify the key to create a new rule. @@ -1425,7 +1425,7 @@ my_account.notifications=Notifications my_account.no_project_notifications=You have not set project notifications yet. my_account.profile=Profile my_account.security=Security -my_account.tokens_description=If you want to enforce security by not providing credentials of a real SonarQube user to run your code scan or to invoke web services, you can provide a User Token as a replacement of the user login. This will increase the security of your installation by not letting your analysis user's password going through your network. +my_account.tokens_description=If you want to enforce security by not providing credentials of a real {instance} user to run your code scan or to invoke web services, you can provide a User Token as a replacement of the user login. This will increase the security of your installation by not letting your analysis user's password going through your network. my_account.projects=Projects my_account.projects.description=Those projects are the ones you are administering. my_account.projects.no_results=You are not administering any project yet. @@ -1948,7 +1948,7 @@ global_permissions.profileadmin.desc=Ability to perform any action on quality pr global_permissions.gateadmin=Administer Quality Gates global_permissions.gateadmin.desc=Ability to perform any action on quality gates. global_permissions.scan=Execute Analysis -global_permissions.scan.desc=Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the SonarQube server. +global_permissions.scan.desc=Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the {instance} server. global_permissions.provisioning=Create Projects global_permissions.provisioning.desc=Ability to initialize a project so its settings can be configured before the first analysis. global_permissions.filter_by_x_permission=Filter by "{0}" permission @@ -1970,7 +1970,7 @@ organizations_permissions.profileadmin.desc=Ability to perform any action on qua organizations_permissions.gateadmin=Administer Quality Gates organizations_permissions.gateadmin.desc=Ability to perform any action on quality gates. organizations_permissions.scan=Execute Analysis -organizations_permissions.scan.desc=Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the SonarQube server. +organizations_permissions.scan.desc=Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the {instance} server. organizations_permissions.provisioning=Create Projects organizations_permissions.provisioning.desc=Ability to initialize a project so its settings can be configured before the first analysis. @@ -1994,7 +1994,7 @@ projects_role.user.desc=Access a project, browse its measures and issues, confir projects_role.codeviewer=See Source Code projects_role.codeviewer.desc=View the project's source code. (Users will also need "Browse" permission) projects_role.scan=Execute Analysis -projects_role.scan.desc=Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the SonarQube server. +projects_role.scan.desc=Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the {instance} server. projects_role.bulk_change=Bulk Change projects_role.apply_template=Apply Permission Template projects_role.apply_template_to_xxx=Apply Permission Template To "{0}" @@ -2124,7 +2124,7 @@ workspace.no_rule=The rule has been removed or never existed. #------------------------------------------------------------------------------ marketplace.page=Marketplace marketplace.page.description=Discover and install new features -marketplace.sonarqube_needs_to_be_restarted_to=SonarQube needs to be restarted in order to +marketplace.instance_needs_to_be_restarted_to={instance} needs to be restarted in order to marketplace.install_x_plugins=install {nb} plugins marketplace.update_x_plugins=update {nb} plugins marketplace.uninstall_x_plugins=uninstall {nb} plugins @@ -2386,7 +2386,7 @@ overview.badges.measure.description.VW=This badge dynamically displays the curre overview.badges.measure.description.APP=This badge dynamically displays the current status of one metric of your application. overview.badges.marketing.alt=Scanned on SonarCloud badge overview.badges.marketing.description=This badge lets you advertise that you're using SonarCloud for code quality. -overview.badges.quality_gate.alt=SonarCloud Quality Gate badge +overview.badges.quality_gate.alt=Quality Gate badge overview.badges.quality_gate.description=This badge dynamically displays the current quality gate status of your project. overview.badges.quality_gate.description.APP=This badge dynamically displays the current quality gate status of your application. overview.badges.quality_gate.description.TRK=This badge dynamically displays the current quality gate status of your project. @@ -2524,8 +2524,7 @@ organization.avatar.description=Url of a small image that represents the organiz organization.avatar.preview=Preview organization.created=Organization "{0}" has been created. organization.delete=Delete Organization -organization.delete.description=Delete this organization from SonarQube. All projects belonging to the organization will be deleted as well. The operation cannot be undone. -organization.delete.description.sonarcloud=Delete this organization from SonarCloud. All projects belonging to the organization will be deleted as well. The operation cannot be undone. +organization.delete.description=Delete this organization from {instance}. All projects belonging to the organization will be deleted as well. The operation cannot be undone. organization.delete.sonarcloud.paid_plan_info=Your current paid plan subscription will stop and you won't be charged anymore. organization.delete.question=Are you sure you want to delete this organization? organization.deleted=Organization has been deleted. @@ -2578,7 +2577,7 @@ footer.help=Help footer.license=LGPL v3 footer.news=News footer.plugins=Plugins -footer.production_database_explanation=The embedded database will not scale, it will not support upgrading to newer versions of SonarQube, and there is no support for migrating your data out of it into a different database engine. +footer.production_database_explanation=The embedded database will not scale, it will not support upgrading to newer versions of {instance}, and there is no support for migrating your data out of it into a different database engine. footer.production_database_warning=Embedded database should be used for evaluation purpose only footer.support=Get Support footer.terms=Terms @@ -2592,8 +2591,7 @@ footer.web_api=Web API # ONBOARDING # #------------------------------------------------------------------------------ -onboarding.header=Welcome to SonarQube! -onboarding.header.sonarcloud=Welcome to SonarCloud! +onboarding.header=Welcome to {instance}! onboarding.header.description=Want to quickly analyze a first project? Follow these {0} easy steps. onboarding.token.header=Provide a token @@ -2636,20 +2634,20 @@ onboarding.language.os.win=Windows onboarding.language.os.mac=macOS onboarding.language.project_key=Define a unique project key -onboarding.analysis.java.maven.header=Execute the SonarQube Scanner for Maven from your computer -onboarding.analysis.java.maven.text=Running a SonarQube analysis with Maven is straighforward. You just need to run the following command in your project's folder. -onboarding.analysis.java.maven.docs=Please visit the official documentation of the SonarQube Scanner for Maven for more details. +onboarding.analysis.java.maven.header=Execute the Scanner for Maven from your computer +onboarding.analysis.java.maven.text=Running a {instance} analysis with Maven is straighforward. You just need to run the following command in your project's folder. +onboarding.analysis.java.maven.docs=Please visit the official documentation of the Scanner for Maven for more details. -onboarding.analysis.java.gradle.header=Execute the SonarQube Scanner for Gradle from your computer -onboarding.analysis.java.gradle.text.1=Running a SonarQube analysis with Gradle is straighforward. You just need to declare the org.sonarqube plugin in your build.gradle file: +onboarding.analysis.java.gradle.header=Execute the Scanner for Gradle from your computer +onboarding.analysis.java.gradle.text.1=Running an analysis with Gradle is straighforward. You just need to declare the org.sonarqube plugin in your build.gradle file: onboarding.analysis.java.gradle.text.2=and run the following command: -onboarding.analysis.java.gradle.docs=Please visit the official documentation of the SonarQube Scanner for Gradle for more details. +onboarding.analysis.java.gradle.docs=Please visit the official documentation of the Scanner for Gradle for more details. -onboarding.analysis.msbuild.header=Download and unzip the SonarQube Scanner for MSBuild +onboarding.analysis.msbuild.header=Download and unzip the Scanner for MSBuild onboarding.analysis.msbuild.text=And add the executable's directory to the %PATH% environment variable -onboarding.analysis.msbuild.execute=Execute the SonarQube Scanner for MSBuild from your computer -onboarding.analysis.msbuild.execute.text=Running a SonarQube analysis is straighforward. You just need to execute the following commands at the root of your solution. -onboarding.analysis.msbuild.docs=Please visit the official documentation of the SonarQube Scanner for MSBuild for more details. +onboarding.analysis.msbuild.execute=Execute the Scanner for MSBuild from your computer +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=Please visit the official documentation of the Scanner for MSBuild for more details. onboarding.analysis.build_wrapper.header.linux=Download and unzip the Build Wrapper for Linux onboarding.analysis.build_wrapper.header.win=Download and unzip the Build Wrapper for Windows @@ -2658,15 +2656,15 @@ onboarding.analysis.build_wrapper.text.linux=And add the executable's directory onboarding.analysis.build_wrapper.text.win=And add the executable's directory to the %PATH% environment variable onboarding.analysis.build_wrapper.text.mac=And add the executable's directory to the PATH environment variable -onboarding.analysis.sq_scanner.header.linux=Download and unzip the SonarQube Scanner for Linux -onboarding.analysis.sq_scanner.header.win=Download and unzip the SonarQube Scanner for Windows -onboarding.analysis.sq_scanner.header.mac=Download and unzip the SonarQube Scanner for macOS +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.linux=And add the bin directory to the PATH environment variable onboarding.analysis.sq_scanner.text.win=And add the bin directory to the %PATH% environment variable onboarding.analysis.sq_scanner.text.mac=And add the bin directory to the PATH environment variable -onboarding.analysis.sq_scanner.execute=Execute the SonarQube Scanner from your computer -onboarding.analysis.sq_scanner.execute.text=Running a SonarQube analysis is straighforward. You just need to execute the following commands in your project's folder. -onboarding.analysis.sq_scanner.docs=Please visit the official documentation of the SonarQube Scanner for more details. +onboarding.analysis.sq_scanner.execute=Execute the Scanner from your computer +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.docs=Please visit the official documentation of the Scanner for more details. onboarding.project_watcher.not_started=Once your project is analyzed, this page will refresh automatically. onboarding.project_watcher.in_progress=Analysis is in progress, please wait... -- 2.39.5