]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-14725 Remove embedded documentation's calls to the update-center
authorPhilippe Perrin <philippe.perrin@sonarsource.com>
Tue, 20 Apr 2021 15:34:56 +0000 (17:34 +0200)
committersonartech <sonartech@sonarsource.com>
Mon, 26 Apr 2021 20:03:35 +0000 (20:03 +0000)
12 files changed:
server/sonar-docs/README.md
server/sonar-docs/plugins/sonarsource-source-filesystem/__tests__/index-test.js [new file with mode: 0644]
server/sonar-docs/plugins/sonarsource-source-filesystem/index.js
server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-ant.md
server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-azure-devops.md
server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-gradle.md
server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-jenkins.md
server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-maven.md
server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-msbuild.md
server/sonar-docs/src/pages/analysis/scan/sonarscanner.md
server/sonar-web/src/main/js/components/docs/DocMarkdownBlock.tsx
server/sonar-web/src/main/js/components/docs/__tests__/DocMarkdownBlock-test.tsx

index acd52390717a1621ed073e119057e2b3bbc4a8b6..22e09c69b99fee16ddd32ff9a82ba8673fc1440c 100644 (file)
@@ -156,6 +156,12 @@ this content is displayed in SonarQube and in the static website
 this content is displayed only in the static website
 
 <!-- /static -->
+
+<!-- embedded -->
+
+this content is displayed only in the embedded documentation
+
+<!-- /embedded -->
 ```
 
 You can also use these comments inline:
@@ -303,6 +309,8 @@ Note that an iframe is **not** a self-closing tag. This means that the following
 
 #### Dynamic Scanner Version Info
 
+_Only supported by the static documentation_
+
 You can dynamically include a scanner version block to any page, using the following special tag:
 
 ```html
diff --git a/server/sonar-docs/plugins/sonarsource-source-filesystem/__tests__/index-test.js b/server/sonar-docs/plugins/sonarsource-source-filesystem/__tests__/index-test.js
new file mode 100644 (file)
index 0000000..b07fff9
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2021 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.
+ */
+
+const { cutAdditionalContent, cleanContent } = require('../index.js');
+
+it('should cut additional content properly', () => {
+  const tag = 'special';
+  const content = 'This section contains a <!-- special -->special content<!-- /special -->.';
+  expect(cutAdditionalContent(content, tag)).toBe('This section contains a .');
+});
+
+it('should clean the content', () => {
+  const content = `
+<!-- sonarcloud -->This is a sonarcloud content to cut<!-- /sonarcloud -->
+<!-- sonarqube -->This is a sonarqube content to preserve<!-- /sonarqube -->
+<!-- embedded -->This is an embedded content to cut<!-- /embedded -->
+<!-- static -->This a static content to preserve<!-- /static -->
+This is a {instance} instance
+`;
+  expect(cleanContent(content)).toBe(`
+
+This is a sonarqube content to preserve
+
+This a static content to preserve
+This is a SonarQube instance
+`);
+});
index c62427f34a5f1a9a9d228de69ca17d298aac4457..a54ae0519dbb3635899154aebb798bd37a61edb8 100644 (file)
@@ -133,26 +133,33 @@ function loadNodeContent(fileNode) {
 }
 
 function loadNodeContentSync(fileNode) {
-  const content = processPluginOverridesIfAvailable(
-    fs.readFileSync(fileNode.absolutePath, 'utf-8')
-  );
-  let newContent = cutSonarCloudContent(content);
-  newContent = removeRemainingContentTags(newContent);
-  newContent = handleIncludes(newContent, fileNode);
-  newContent = replaceInstanceTag(newContent);
-  return newContent;
+  let content = processPluginOverridesIfAvailable(fs.readFileSync(fileNode.absolutePath, 'utf-8'));
+
+  content = cleanContent(content);
+  content = handleIncludes(content, fileNode);
+
+  return content;
+}
+
+function cleanContent(content) {
+  content = cutAdditionalContent(content, 'sonarcloud');
+  content = cutAdditionalContent(content, 'embedded');
+  content = removeRemainingContentTags(content);
+  content = replaceInstanceTag(content);
+
+  return content;
 }
 
 function removeRemainingContentTags(content) {
-  const regexBase = '<!-- \\/?(sonarqube|sonarcloud|static) -->';
+  const regexBase = '<!-- \\/?(sonarqube|sonarcloud|static|embedded) -->';
   return content
     .replace(new RegExp(`^${regexBase}(\n|\r|\r\n|$)`, 'gm'), '')
     .replace(new RegExp(`${regexBase}`, 'g'), '');
 }
 
-function cutSonarCloudContent(content) {
-  const beginning = '<!-- sonarcloud -->';
-  const ending = '<!-- /sonarcloud -->';
+function cutAdditionalContent(content, tag) {
+  const beginning = '<!-- ' + tag + ' -->';
+  const ending = '<!-- /' + tag + ' -->';
 
   let newContent = content;
   let start = newContent.indexOf(beginning);
@@ -191,3 +198,5 @@ function replaceInstanceTag(content) {
 exports.createFilePath = createFilePath;
 exports.createRemoteFileNode = createRemoteFileNode;
 exports.loadNodeContent = loadNodeContent;
+exports.cleanContent = cleanContent;
+exports.cutAdditionalContent = cutAdditionalContent;
index bf4507c3fdd876e2dcbbddbc810afee7bda5593c..9129c3f09458da787de43b80785c37793b5df744 100644 (file)
@@ -3,13 +3,18 @@ title: SonarScanner for Ant
 url: /analysis/scan/sonarscanner-for-ant/
 ---
 
+<!-- static -->
 <update-center updatecenterkey="scannerant"></update-center>
+<!-- /static -->
+<!-- embedded -->
+[[info]]
+| See the [online documentation](https://redirect.sonarsource.com/doc/download-scanner-ant.html) to get more details on the latest version of the scanner and how to download it.
+<!-- /embedded -->
 
 The SonarScanner for Ant provides a `task` to allow integration of SonarQube analysis into an Apache Ant build script.
 
 The SonarScanner for Ant is an Ant Task that is a wrapper of [SonarScanner](/analysis/scan/sonarscanner/), which works by invoking SonarScanner and passing to it all [properties](/analysis/analysis-parameters/) named following a `sonar.*` convention. This has the downside of not being very Ant-y, but the upside of providing instant availability of any new analysis parameter introduced by a new version of SonarQube. Therefore, successful use of the SonarScanner for Ant requires strict adherence to the property names shown below.
 
-
 ## Using the SonarScanner for Ant
 Define a new sonar Ant target in your Ant build script:
 ```
index 431e7cd6e65281c45f9be931b3f45fc8474cc300..d95a6fb25b29ec4066549abd3c75e0595bfdba0d 100644 (file)
@@ -3,7 +3,13 @@ title: SonarScanner for Azure DevOps
 url: /analysis/scan/sonarscanner-for-azure-devops/
 ---
 
+<!-- static -->
 <update-center updatecenterkey="scannerazure"></update-center>
+<!-- /static -->
+<!-- embedded -->
+[[info]]
+| See the [online documentation](https://redirect.sonarsource.com/doc/download-scanner-azure.html) to get more details on the latest version of the scanner and how to download it.
+<!-- /embedded -->
 
 The [SonarScanner for Azure DevOps](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) makes it easy to integrate analysis into your build pipeline. The extension allows the analysis of all languages supported by SonarQube.
 
index 23bcc653a95aa6ad48aa931b0f9d42b13fc7ed47..aa01e9a40c4f4d7b5b8b194dd5bc3dc2f3fa946a 100644 (file)
@@ -3,7 +3,13 @@ title: SonarScanner for Gradle
 url: /analysis/scan/sonarscanner-for-gradle/
 ---
 
+<!-- static -->
 <update-center updatecenterkey="scannergradle"></update-center>
+<!-- /static -->
+<!-- embedded -->
+[[info]]
+| See the [online documentation](https://redirect.sonarsource.com/doc/download-scanner-gradle.html) to get more details on the latest version of the scanner and how to download it.
+<!-- /embedded -->
 
 The SonarScanner for Gradle provides an easy way to start SonarQube analysis of a Gradle project.
 
index 7ee272fd082ef310bddb36097a61649f31128780..aa1e0481f3702ffe166885e879d58f26d6d0ee38 100644 (file)
@@ -3,7 +3,13 @@ title: SonarScanner for Jenkins
 url: /analysis/scan/sonarscanner-for-jenkins/
 ---
 
+<!-- static -->
 <update-center updatecenterkey="scannerjenkins"></update-center>
+<!-- /static -->
+<!-- embedded -->
+[[info]]
+| See the [online documentation](https://redirect.sonarsource.com/doc/download-scanner-jenkins.html) to get more details on the latest version of the scanner and how to download it.
+<!-- /embedded -->
 
 This plugin lets you centralize the configuration of SonarQube server connection details in Jenkins global configuration.
 
index 0b02c880a307f6724774b117df715cea3c1217b0..79fa78b392baee0a496e9ca8f81e8915a1969a94 100644 (file)
@@ -3,7 +3,13 @@ title: SonarScanner for Maven
 url: /analysis/scan/sonarscanner-for-maven/
 ---
 
+<!-- static -->
 <update-center updatecenterkey="scannermaven"></update-center>
+<!-- /static -->
+<!-- embedded -->
+[[info]]
+| See the [online documentation](https://redirect.sonarsource.com/doc/download-scanner-maven.html) to get more details on the latest version of the scanner and how to download it.
+<!-- /embedded -->
 
 The SonarScanner for Maven is recommended as the default scanner for Maven projects.
 
index e972bd48ae80258d806fc6f55403486c70ce4eed..47b650509ac6099150f56af9ee83f5ff5c87e0e7 100644 (file)
@@ -4,7 +4,13 @@ title: SonarScanner for .NET
 ---
 
 <!-- sonarqube -->
+<!-- static -->
 <update-center updatecenterkey="scannermsbuild"></update-center>
+<!-- /static -->
+<!-- embedded -->
+[[info]]
+| See the [online documentation](https://redirect.sonarsource.com/doc/download-scanner-msbuild.html) to get more details on the latest version of the scanner and how to download it.
+<!-- /embedded -->
 <!-- /sonarqube -->
 
 <!-- sonarcloud -->
@@ -17,7 +23,7 @@ title: SonarScanner for .NET
 
 [[info]]
 | Since version 5.0, the SonarScanner for MSBuild is now the SonarScanner for .NET. 
-| documentation is updated with that new name, artifacts and links will remain with the old name for now.
+| Documentation is updated with that new name, artifacts and links will remain with the old name for now.
 
 The SonarScanner for .NET is the recommended way to launch an analysis for projects/solutions using MSBuild or dotnet command as a build tool. It is the result of a [collaboration between SonarSource and Microsoft](https://www.sonarqube.org/announcing-sonarqube-integration-with-msbuild-and-team-build/).
 
index 16d1c2616db88a6cedc4de1df6e665c32d0fce07..50393459c60744ab4bd84d512a89498893c81c64 100644 (file)
@@ -3,7 +3,13 @@ title: SonarScanner
 url: /analysis/scan/sonarscanner/
 ---
 
+<!-- static -->
 <update-center updatecenterkey="scannercli"></update-center>
+<!-- /static -->
+<!-- embedded -->
+[[info]]
+| See the [online documentation](https://redirect.sonarsource.com/doc/download-scanner.html) to get more details on the latest version of the scanner and how to download it.
+<!-- /embedded -->
 
 The SonarScanner is the scanner to use when there is no specific scanner for your build system.
 
index 2e5420495ba414466832c6eaa9bd2cd82e6484c3..f85d262ef41ea423d2be7bc8a5b061985ac6b56f 100644 (file)
@@ -25,7 +25,6 @@ import rehypeSlug from 'rehype-slug';
 import remark from 'remark';
 import remarkCustomBlocks from 'remark-custom-blocks';
 import remarkRehype from 'remark-rehype';
-import MetaData from 'sonar-ui-common/components/ui/update-center/MetaData';
 import { scrollToElement } from 'sonar-ui-common/helpers/scrolling';
 import DocCollapsibleBlock from './DocCollapsibleBlock';
 import DocImg from './DocImg';
@@ -84,10 +83,7 @@ export default class DocMarkdownBlock extends React.PureComponent<Props> {
             ? withChildProps(DocTooltipLink, childProps)
             : withChildProps(DocLink, { onAnchorClick: this.handleAnchorClick }),
           // use custom img tag to render documentation images
-          img: DocImg,
-          'update-center': ({ updatecenterkey }: { updatecenterkey: string }) => (
-            <MetaData updateCenterKey={updatecenterkey} />
-          )
+          img: DocImg
         }
       });
 
index 0ae3f7683545ab5e7cd7e83ef24b838f2d03e2c5..3cdc7fdabe2f5d94ac97f8bca5509ed59541a422 100644 (file)
@@ -17,9 +17,8 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-import { mount, shallow } from 'enzyme';
+import { shallow } from 'enzyme';
 import * as React from 'react';
-import MetaData from 'sonar-ui-common/components/ui/update-center/MetaData';
 import DocMarkdownBlock from '../DocMarkdownBlock';
 
 const CONTENT = `
@@ -80,13 +79,6 @@ it('should render a sticky TOC if available', () => {
   expect(wrapper.find('DocToc').exists()).toBe(true);
 });
 
-it('should correctly render update-center tags', () => {
-  const wrapper = mount(
-    <DocMarkdownBlock content='<update-center updatecenterkey="abap"></update-center>' />
-  );
-  expect(wrapper.find(MetaData).length).toBe(1);
-});
-
 function shallowRender(props: Partial<DocMarkdownBlock['props']> = {}) {
   return shallow(<DocMarkdownBlock content="" {...props} />);
 }