Qodana é uma ferramenta de monitoramento de qualidade de código que identifica e sugere correções para bugs, vulnerabilidades de segurança, duplicações e imperfeições.
Índice
A ação do Github Scan Github permite executar Qodana em um repositório do GitHub.
Para configurar a varredura Qodana, salve o arquivo .github/workflows/code_quality.yml que contém a configuração do fluxo de trabalho:
name : Qodana
on :
workflow_dispatch :
pull_request :
push :
branches :
- main
- ' releases/* '
jobs :
qodana :
runs-on : ubuntu-latest
permissions :
contents : write
pull-requests : write
checks : write
steps :
- uses : actions/checkout@v3
with :
ref : ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
fetch-depth : 0 # a full history is required for pull request analysis
- name : ' Qodana Scan '
uses : JetBrains/[email protected]
env :
QODANA_TOKEN : ${{ secrets.QODANA_TOKEN }} # read the steps about it below Para definir a variável de ambiente QODANA_TOKEN na configuração de construção:
QODANA_TOKEN criptografado e salve o token do projeto como seu valor.QODANA_TOKEN à seção env da etapa Qodana Scan :Usando esse fluxo de trabalho, o Qodana será executado na filial principal, libera ramificações e nas solicitações de tração que chegam ao seu repositório.
NOTA: fetch-depth: 0 é necessária para a finalização da compra, caso a Qodana funcione no modo de solicitação de tração (problemas de relatórios que apareceram apenas nessa solicitação de tração).
Recomendamos que você tenha um arquivo de fluxo de trabalho separado para qodana porque diferentes trabalhos executados em paralelo

Para fazer Qodana corrigir automaticamente os problemas encontrados e empurrar as alterações no seu repositório, você precisa
fixesStrategy no arquivo qodana.yaml em sua raiz do repositórioargs com a estratégia de fixação rápida a ser usada: --apply-fixes ou --cleanuppush-fixes comopull-request : Crie uma nova filial com correções e crie uma solicitação de tração para a filial originalbranch : empurre as correções para a filial original. Além disso, defina pr-mode como false : Atualmente, este modo não é suportado para aplicar correções.contents: write , pull-requests: write , checks: write )pull-request para a propriedade push-fixes : permita que as ações do GitHub criem e aprovem as solicitações de traçãoExemplo de configuração:
- name : Qodana Scan
uses : JetBrains/[email protected]
with :
pr-mode : false
args : --apply-fixes
push-fixes : pull-request
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}Nota O Qodana pode modificar automaticamente não apenas o código, mas também a configuração em
.idea: se você não deseja pressionar essas alterações, adicione.ideaao seu arquivo.gitignore.
Se você quiser fazer operações git diferentes no mesmo trabalho, pode desativar push-fixes e fazer as operações desejadas manualmente
name : Qodana
on :
workflow_dispatch :
pull_request :
push :
branches :
- master
- ' releases/* '
jobs :
qodana :
runs-on : ubuntu-latest
permissions :
contents : write
pull-requests : write
checks : write
steps :
- uses : actions/checkout@v3
with :
ref : ${{ github.event.pull_request.head.sha }}
fetch-depth : 0
- name : ' Qodana Scan '
uses : JetBrains/[email protected]
with :
args : --cleanup
- run : |
git config user.name github-actions
git config user.email [email protected]
git checkout -b quick-fixes-$GITHUB_RUN_ID
git add -- . ':!.idea'
git commit -m "I fixed some issues"
git push origin quick-fixes-$GITHUB_RUN_ID
gh pr create --repo $GITHUB_REPOSITORY --base $GITHUB_REF_NAME --head quick-fixes-$GITHUB_RUN_ID --title "Pull requests" --body "I fixed some issues"
env:
GH_TOKEN: ${{ github.token }} Você pode configurar a digitalização do código do GitHub para o seu projeto usando Qodana. Para fazer isso, adicione essas linhas ao arquivo de fluxo de trabalho code_quality.yml logo abaixo da configuração básica da verificação Qodana:
- uses : github/codeql-action/upload-sarif@v2
with :
sarif_file : ${{ runner.temp }}/qodana/results/qodana.sarif.json Esta amostra chama codeql-action para fazer upload de um relatório Qodana formatado com SARIF para o GitHub e especifica o arquivo de relatório usando a tecla sarif_file .
A varredura do código do GitHub não exporta resultados de inspeção para ferramentas de terceiros, o que significa que você não pode usar esses dados para processamento adicional da Qodana. Nesse caso, você deve configurar o processamento da linha de base e a qualidade do lado do Qodana antes de enviar os resultados da inspeção para a digitalização do código do GitHub, consulte o portão de qualidade e a seção de linha de base para obter detalhes.
Você pode aplicar o Github para bloquear a fusão de solicitações de tração se o portão de qualidade Qodana falhou. Para fazer isso, crie uma regra de proteção de ramificação, conforme descrito abaixo:
pull_request que visam a ramificação main . on :
pull_request :
branches :
- main Em vez de main , você pode especificar sua filial aqui.
fail-threshold de ação Qodana.main ao padrão do nome do ramo .Qodana e verifique -a.Você pode combinar o portão de qualidade e os recursos de linha de base para gerenciar sua dívida técnica, relatar apenas novos problemas e bloquear solicitações de tração que contêm muitos problemas.
Siga estas etapas para estabelecer uma linha de base para o seu projeto:
cd project
qodana scan --show-report Abra seu relatório em http://localhost:8080/ , adicione problemas detectados à linha de base e faça o download do arquivo qodana.sarif.json .
Carregue o arquivo qodana.sarif.json para a pasta raiz do seu projeto no github.
Anexar --baseline,qodana.sarif.json Argumento ao parâmetro args de configuração de ação de varredura Qodana no arquivo code_quality.yml :
- name : Qodana Scan
uses : JetBrains/qodana-action@main
with :
args : --baseline,qodana.sarif.jsonSe você deseja atualizar a linha de base, precisará repetir essas etapas mais uma vez.
A partir disso, o Github gerará alterações apenas para os problemas que não foram adicionados à linha de base como novos.
Para estabelecer um portão de qualidade adicionalmente à linha de base, adicione esta linha ao code_quality.yml logo após a linha de linha baseline-path :
fail-threshold : <number-of-accepted-problems> Com base nisso, você poderá detectar apenas novos problemas em solicitações de tração que caem além da linha de base. Ao mesmo tempo, puxe solicitações com novos problemas que excedam o limite fail-threshold serão bloqueados e o fluxo de trabalho falhará.
Você pode configurar um crachá de fluxo de trabalho Qodana em seu repositório, para fazê -lo, seguir estas etapas:

Provavelmente, você não precisará de outras opções além args : todas as outras opções podem ser úteis se você estiver configurando vários trabalhos de varredura de Qodana em um fluxo de trabalho.
Use with para definir quaisquer parâmetros de ação:
with :
args : --baseline,qodana.sarif.json
cache-default-branch-only : true| Nome | Descrição | Valor padrão |
|---|---|---|
args | Argumentos adicionais de comando scan CLI da CLI, dividem os argumentos com vírgulas ( , ), por exemplo -i,frontend,--print-problems . Opcional. | - |
results-dir | Diretório para armazenar os resultados da análise. Opcional. | ${{ runner.temp }}/qodana/results |
upload-result | Carregue os resultados da Qodana (Sarif, outros artefatos, toras) como um artefato para o trabalho. Opcional. | false |
artifact-name | Especifique o nome do artefato de resultados de Qodana, usado para o upload dos resultados. Opcional. | qodana-report |
cache-dir | Diretório para armazenar o Cache Qodana. Opcional. | ${{ runner.temp }}/qodana/caches |
use-caches | Utilize caches Github para execuções de Qodana. Opcional. | true |
primary-cache-key | Defina a chave de cache primária. Opcional. | qodana-2024.3-${{ github.ref }}-${{ github.sha }} |
additional-cache-key | Defina a chave de cache adicional. Opcional. | qodana-2024.3-${{ github.ref }} |
cache-default-branch-only | Carregue o cache apenas para a ramificação padrão. Opcional. | false |
use-annotations | Use a anotação para marcar os resultados na interface do usuário do GitHub. Opcional. | true |
pr-mode | Analisar apenas os arquivos alterados em uma solicitação de tração. Opcional. | true |
post-pr-comment | Publique um comentário com o resumo dos resultados da Qodana para a solicitação de tração. Opcional. | true |
github-token | Token do Github para acessar o repositório: pós -anotações, comentários. Opcional. | ${{ github.token }} |
push-fixes | Push Qodana Fixs para o repositório, pode ser none , branch para o ramo atual ou pull-request . Opcional. | none |
Todos os problemas, solicitações de recursos e suporte relacionados ao Qodana são tratados no YouTrack.
Se você quiser registrar um novo problema, use o link youtrack | Nova edição.