SonarQube Excluir um diretório

132

Estou tentando excluir um diretório da análise do Sonar. Eu tenho as seguintes propriedades definidas no meu sonar-project.propertiesarquivo:

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java

A estrutura de diretórios que tenho é:

src/java/dig
src/java/test/dig

Quando corro o sonar-runner, recebo as seguintes informações:

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java

Mas quando verifico o resultado da análise, todos os pacotes dentro do diretório de teste ainda estão lá.

Eu só preciso dizer ao Sonar para não analisar o diretório de teste e quaisquer pacotes dentro dele.

user1982350
fonte
3
Encontrei a solução: sonar.exclusions = test / ** / *. Java
user1982350
Mas se você deseja evitar a análise de teste, pode tentar usar, por exemplo, o pacote mvn clean -DskipTests
Eddú Meléndez

Respostas:

120

Tente algo como isto:

sonar.exclusions=src/java/test/**
Juan Hernandez
fonte
4
Assegure-se de usar o padrão de copo de arquivo Ant para caracteres curinga. Aqui está uma boa explicação: stackoverflow.com/a/86915/748524
Stephan
Aqui está opções de linha de definição de comando docs.sonarqube.org/display/SONAR/...
N0dGrand87
4
Quem vê isso, tenha certeza de que src/test/javasim src/java/test/.
Faraz
Como excluir métodos em c #
natureza vetri
É importante notar que este não é tratado como uma expressão regular e aplicadas em todo o seu projeto sonar.exclusions=node_modules/**não excluirá node_modules aninhados pastas que você precisa fazer sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**para excluir explicitamente-los
Christian Bartram
68

Sou capaz de excluir vários diretórios usando a configuração abaixo (caminhos de pasta separados por vírgula):

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**

E enquanto rodava o corredor do sonar, obtive o seguinte no log:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**
Damodaran
fonte
18
Também recebo a mensagem excluída, mas os arquivos ainda são analisados.
Sebas
nos parâmetros do Teamcity, usei sua dica, mas inseri -D antes (-Dsonar.exclu ...). Trabalha aqui. :-)
Maciel Bombonato
Como excluir todos os arquivos * .html da verificação aqui? Tentei isso, sonar.exclusions=**/bin/**,*.htmlmas ainda leva arquivos html também na verificação. Os arquivos HTML são todas subpastas em vários lugares e adicionar aqui o nível da subpasta com o mapa de caminho real será mais trabalhoso. Existe uma maneira de excluir todos os arquivos * .specific_file_type da verificação?
Elamurugan 28/04
13

Se quisermos pular a pasta inteira, pode ser usado o seguinte:

sonar.exclusions=folderName/**/*

E se tivermos apenas um arquivo específico, forneça o caminho completo.

Toda a pasta que precisa ser excluída e anexada aqui.

Shradha Modi
fonte
2
Qual é a diferença entre essa resposta e sonar.exclusions=folderNamee sonar.exclusions=folderName/**? Graças
Payne
* - Corresponde a zero ou mais caracteres ** - Corresponde a zero ou mais diretórios? - Combine um único personagem
Keerthi Bandara 03/06
12

Outra opção de configuração é adicionar propriedades maven sonar.exclusions. Abaixo está um exemplo de arquivo pom com exclusões do diretório estático jquery e do diretório estático do visualizador de pdf.

<project >
<modelVersion>4.0.0</modelVersion>
<artifactId>my Artifact</artifactId>
<!-- Enviroment variables can be referenced as such: ${env.PATH} -->
<packaging>war</packaging>
<url>http://maven.apache.org</url>

<properties>

    <junit.version>4.9</junit.version>
    <mockito.version>1.9.5</mockito.version>
    <jackson.version>1.9.7</jackson.version>
    <powermock.version>1.5</powermock.version>

    <!--Exclude the files Here-->
    <sonar.exclusions>src/main/webapp/static/jquery_ui/*,src/main/webapp/static/pdf-viewer/*,src/main/webapp/static/pdf-viewer/**,src/main/webapp/static/pdf-viewer/**/*</sonar.exclusions>
</properties>

Akin Okegbile
fonte
7

A maneira mais fácil é acessar o URL do servidor após iniciar o servidor (localhost: 8080) e, em seguida, fazer o login como administrador. Vá para Configurações> Exclusões> Exclusões do arquivo de origem - Adicione seus pacotes aqui. Reinicie o servidor.

Maverick
fonte
2

qual versão do sonar você está usando? Há uma opção chamada " sonar.skippedModules = yourmodulename ".

Isso pulará o módulo inteiro. Portanto, esteja ciente disso.

Cifra
fonte
12
AVISO - A propriedade 'sonar.skippedModules' está obsoleta desde a versão 4.3 e não deve mais ser usada.
Zheng Kai
1

Apenas para mencionar que depois de excluir os arquivos do Sonar, faça o mesmo para o plugin Jacoco:

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 
user07
fonte
1

Adicionar caminhos de pasta separados por vírgula sonar.exclusions=**/abc/**,**/def/**

Isso funcionou em um projeto angular

dasunse
fonte
1

Se você é um usuário do Azure DevOps procurando onde e como excluir arquivos e pastas, aqui está:

  1. Edite seu pipeline
  2. Verifique se você adicionou a tarefa "Preparar análise no SonarQube". Você precisará procurar em outro lugar se precisar de ajuda para configurar isso. Sugestão: Use o editor de pipeline da interface do usuário e o editor yaml se estiver faltando o link de gerenciamento. No momento, não há como converter para UI do yaml. Apenas recrie o pipeline. Se você estiver usando o git, poderá excluir o yaml da raiz do seu repositório.
  3. Na seção 'Avançado' da tarefa "Preparar análise no SonarQube", você pode adicionar exclusões. Consulte os conselhos de outras pessoas para obter formatos de exclusão específicos.

Exemplo:

# Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
# sonar.exclusions=**/*.bin
sonar.exclusions=MyProjectName/MyWebContentFolder/**

Nota: Se você não tem certeza do caminho, pode entrar em sonarqube, visualizar seu projeto, ver todos ou novos 'odores de código' e o caminho que você precisa está listado acima de cada agrupamento de problemas. Você pode pegar o caminho completo para um arquivo ou usar caracteres curinga como estes exemplos:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Se você não tiver a tarefa 'Executar análise de código' adicionada, faça-a e coloque-a em algum lugar após a tarefa 'Compilar solução ** / *. Sln'.

Salve e coloque na fila e, em seguida, verifique o servidor do sonarqube para ver se as exclusões funcionaram.

GrayDwarf
fonte
0

adicione esta linha ao seu arquivo sonar-project.properties

ex: sonar.exclusions = src / *. java, tenha cuidado se você quiser excluir uma pasta e dentro dela existe um arquivo, você deve primeiro excluir os arquivos ou adicioná-los um por um, por exemplo, imagine que exista uma pasta como abaixo :

src/app.java src/controllers/home.java src/services/test.java

Você tem que fazer isso: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Funcionou para mim

mohammad pakivand
fonte
0

Você pode fazer o mesmo com build.gradle

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java"
  }
}

E se você deseja excluir mais arquivos / diretórios, então:

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}
Vince D
fonte
-1

Isso funcionou para mim:

sonar.exclusions=src/**/wwwroot/**/*.js,src/**/wwwroot/**/*.css

Exclui os arquivos .js e .css em qualquer um dos subdiretórios de uma pasta "wwwroot" que apareça como um dos subdiretórios da pasta "src" (raiz do projeto).

Dinesh Muciliath Jayadevan
fonte
Isso não parece ser substancialmente diferente de outras respostas. Ele usa curingas de estrela dupla, assim como muitas outras respostas. Não corresponde ao que a pergunta estava tentando excluir.
Stephen Ostermiller 30/04