@backstage-community/plugin-sonarqube
Version:
134 lines (100 loc) • 3.58 kB
Markdown
# SonarQube Plugin
The SonarQube Plugin displays code statistics from [SonarCloud](https://sonarcloud.io) or [SonarQube](https://sonarqube.com).


## Getting Started
1. Install the SonarQube Plugin:
```bash
# From your Backstage root directory
yarn --cwd packages/app add @backstage-community/plugin-sonarqube -community/plugin-sonarqube-react
```
2. Add the `EntitySonarQubeCard` to the EntityPage:
```diff
// packages/app/src/components/catalog/EntityPage.tsx
+ import { EntitySonarQubeCard } from '-community/plugin-sonarqube';
+ import { isSonarQubeAvailable } from '-community/plugin-sonarqube-react';
...
const overviewContent = (
<Grid container spacing={3} alignItems="stretch">
<Grid item md={6}>
<EntityAboutCard variant="gridItem" />
</Grid>
+ <EntitySwitch>
+ <EntitySwitch.Case if={isSonarQubeAvailable}>
+ <Grid item md={6}>
+ <EntitySonarQubeCard variant="gridItem" />
+ </Grid>
+ </EntitySwitch.Case>
+ </EntitySwitch>
</Grid>
);
```
The "Read more" link that shows in the MissingAnnotationEmptyState is also configurable.
```diff
// packages/app/src/components/catalog/EntityPage.tsx
+ import { EntitySonarQubeCard } from '-community/plugin-sonarqube';
+ const MISSING_ANNOTATION_READ_MORE_URL = 'https://backstage.io/docs/features/software-catalog/descriptor';
...
const overviewContent = (
<Grid container spacing={3} alignItems="stretch">
<Grid item md={6}>
<EntityAboutCard variant="gridItem" />
</Grid>
+ <Grid item md={6}>
+ <EntitySonarQubeCard variant="gridItem" missingAnnotationReadMoreUrl={MISSING_ANNOTATION_READ_MORE_URL} />
+ </Grid>
</Grid>
);
```
3. Add the `SonarQubeRelatedEntitiesOverview` to the EntityPage:
```diff
// packages/app/src/components/catalog/EntityPage.tsx
+ import { SonarQubeRelatedEntitiesOverview } from '-community/plugin-sonarqube';
...
const systemPage = (
<EntityLayout>
...
+ <EntityLayout.Route path="/sonarqube" title="Code Quality">
+ <SonarQubeRelatedEntitiesOverview relationType={RELATION_HAS_PART} entityKind="component" />
+ </EntityLayout.Route>
+
</EntityLayout>
);
```
4. Run the following commands in the root folder of the project to install and compile the changes.
```yaml
yarn install
yarn tsc
```
5. Add the `sonarqube.org/project-key` annotation to the `catalog-info.yaml` file of the target repo for which code quality analysis is needed.
```yaml
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: backstage
description: |
Backstage is an open-source developer portal that puts the developer experience first.
annotations:
sonarqube.org/project-key: YOUR_INSTANCE_NAME/YOUR_PROJECT_KEY
spec:
type: library
owner: CNCF
lifecycle: experimental
```
`YOUR_INSTANCE_NAME/` is optional and will query the default instance if not provided.
### Integrating with `EntityPage` (New Frontend System)
Follow this section if you are using Backstage's [new frontend system](https://backstage.io/docs/frontend-system/).
Import `sonarQubePlugin` in your `App.tsx` and add it to your app's `features` array:
```typescript
import sonarQubePlugin from '-community/plugin-sonarqube/alpha';
// ...
export const app = createApp({
features: [
// ...
sonarQubePlugin,
// ...
],
});
```
## Links
- [Sonarqube Backend](../sonarqube-backend/README.md)