This is a series on how to set up SonarQube as a Quality Gate in your SharePoint Framework development process. The end goal is to add SonarQube to your build and release process through DevOps. These articles will explain:
- How to set up a sample SonarQube server in Azure
- Setting up a unit test sample locally
- How to run a sonar-scanner review manually
- How to integrate the code review into your Azure DevOps build and release process.
It is apparently going to take more blog posts than I expected. But I like to spread these things out – easier to maintain and easier to find what people are looking for.
Introduction
In the previous article we saw how to create a sample SonarQube server in Azure. In this article we will look at how to manually run a SonarQube scan linked to the server we created. The results might be smelly.
In this example we are going to use the SharePoint PnP example for creating unit test with React in SFPx
Setting up the repository locally
Create a new folder for the repo locally and then clone the repository through the terminal with “git clone https://github.com/SharePoint/sp-dev-fx-webparts”. We have to take the whole repo but are not going to use the whole of it – just the react unit testing section.
Then once that is complete navigate the ./samples/react-jest-testing folder
run an npm install
and we are ready to go.
Initial npm test
Immediately after the install you can run and npm test
and see how the sample code hang up under testing. You will get one intentional fail and some code which is not convered by tests. This is to be expected.
The reason we add unit tests to a project is ultimately to improve the quality of the code. This leads to reduction in maintenance costs, lifts the confidence of the development team and allows for continuous integration builds to identify where breaking code has been introduced into a build process within a team.
This project is a great place to start to learn how to unit test within React and the SharePoint Framework.
What we want to be able to do ultimately is collect all of this information on the SonarQube server. We will get to that đ
In the next article we will look at sonar scanner and how we hook that up to the SonarQube server.