SonarQube: TypeScript baseUrl и настройка относительных путей => проблема «Зависимости должны быть явными» (машинопись: S4328) - PullRequest
1 голос
/ 23 января 2020

Контекст

  • Используемый ALM: Azure DevOps
  • Используемая система CI: Azure DevOps
  • Команда сканера, используемая, когда это применимо (личные данные маскируются):
  - task: SonarCloudPrepare@1
    inputs:
      SonarCloud: 'SonarCloud-Clement'
      organization: 'assoconnect'
      scannerMode: 'CLI'
      configMode: 'manual'
      cliProjectKey: 'assoconnect_frontend'
      cliProjectName: 'frontend'
      cliProjectVersion: '$(Build.BuildNumber)'
      cliSources: 'src'
      extraProperties: |
        sonar.tests=src
        sonar.test.inclusions=**/__tests__/**
        sonar.coverage.exclusions=src/pages/**
        sonar.junit.reportPaths=junit.xml
        sonar.typescript.lcov.reportPaths=coverage/lcov.info
        sonar.typescript.tsconfigPath=tsconfig.json
    displayName: 'Prepare SonarQube analysis'

  - task: SonarCloudAnalyze@1
    displayName: 'Run SonarQube analysis'

  - task: SonarCloudPublish@1
    inputs:
      pollingTimeoutSec: '300'
    displayName: 'Publish SonarQube analysis result'
  • Языки хранилища: TypeScript

Проблема наблюдается

Для всех наших файлов imports в .tsx у нас есть экземпляры « Зависимости должны быть явными (машинопись: S4328) ».

Мы настроили baseUrl (https://www.typescriptlang.org/docs/handbook/module-resolution.html#base -url ) в нашем файле tsconfig.json, чтобы нам не приходилось иметь дело с относительными путями. WebStorm выглядит нормально с этим конфигом, и линтер не показывает никаких сообщений. Но в Sonar, когда мы импортируем модуль, так как нет префикса ./, он думает, что это внешний модуль и ищет его в зависимостях.

Пример

  • наш макет:
src/
|___pages/
|   |___Index/
|       |___index.tsx
|       |___type.tsx
|___App.tsx
package.json
tsconfig.json
  • содержимое файлов
// package.json
// nothing path-related, only external dependencies
...
// tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./src/",
...
// src/App.tsx
...
import Index from 'pages/Index' // => ISSUE : Dependencies should be explicit (typescript:S4328)
...
// src/pages/Index/index.tsx
...
import * as Type from './type' // => OK, NO ISSUES
...
import { StoreContext } from 'store' // => ISSUE : Dependencies should be explicit (typescript:S4328)
...
export default () => (
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...