Skip to main content

Usando a varredura de código com seu sistema de CI existente

Você pode analisar seu código com CodeQL CLI ou outra ferramenta em um sistema de integração contínua de terceiros e enviar os resultados para GitHub. Os alertas resultantes code scanning são mostrados junto com todos os alertas gerados dentro GitHub.

Quem pode usar esse recurso?

Usuários com com acesso para gravação

O Code scanning está disponível para os seguintes tipos de repositório:

  • Repositórios públicos no GitHub.com
  • Repositórios de propriedade da organização em GitHub Team, GitHub Enterprise Cloudou GitHub Enterprise Server, com GitHub Code Security habilitados.

Como alternativa à execução code scanning no GitHub usando GitHub Actions, você pode analisar o código em um sistema de integração contínua ou entrega/implantação contínua externo (CI/CD) e carregar os resultados para GitHub.

Observação

Há suporte para o upload de dados SARIF a serem exibidos como resultados da code scanning no GitHub nos repositórios pertencentes à organização com o GitHub Code Security habilitado e em repositórios públicos no GitHub.com. Para saber mais, confira Gerenciando as configurações de segurança e análise do repositório.

Configurando sua ferramenta de análise

Primeiro, você precisará baixar a ferramenta de análise de sua preferência e configurá-la com seu sistema de CI.

Se você estiver usando o CodeQL CLI, será necessário disponibilizar o conteúdo completo do CodeQL CLI pacote para cada servidor de CI no qual deseja executar CodeQLcode scanning a análise. Para obter mais informações, consulte Como configurar a CLI do CodeQL.

Depois de disponibilizar sua ferramenta de análise para os servidores em seu sistema de CI, você estará pronto para gerar dados.

Como analisar o código

Para analisar o código com a CodeQL CLI ou outra ferramenta de análise, você desejará verificar o código que deseja analisar e configurar o ambiente de base de código, certificando-se de que todas as dependências estão disponíveis. Talvez você também queira encontrar o comando de compilação para a base de código, normalmente disponível no arquivo de configuração do seu sistema de CI.

Em seguida, você pode concluir as etapas para analisar sua base de código e produzir resultados, que serão diferentes de acordo com a ferramenta de análise estática que estiver usando.

Se você estiver usando o CodeQL CLI, primeiro precisará criar um banco de dados CodeQL a partir do seu código e, em seguida, analisar o banco de dados para produzir resultados SARIF. Para obter mais informações, consulte Como preparar seu código para a análise do CodeQL e Como analisar o código com as consultas CodeQL.

Gerando um token para autenticação com GitHub

Cada servidor de CI precisa de um GitHub App ou personal access token para uso para carregar resultados para GitHub, se estiver usando a CodeQL CLIAPI REST ou outro método. Você deve usar um token de acesso ou um GitHub App com a security_events permissão de gravação. Se os servidores CI já usarem um token com esse escopo para o checkout de repositórios de GitHub, você poderá usar o mesmo token. Caso contrário, crie um token com a permissão de gravação security_events e adicione-o ao repositório de segredos do sistema de CI. Para obter informações, consulte Sobre a criação de aplicativos GitHub e Gerenciar seus tokens de acesso pessoal.

Para obter mais informações sobre os diferentes métodos para enviar resultados GitHub, consulte Fazer o upload de arquivo SARIF para o GitHub.

Carregando seus resultados para GitHub

Depois de analisar seu código, produzir resultados SARIF e garantir que você possa se autenticar com GitHub, você pode carregar os resultados para GitHub. Para obter mais informações sobre os diferentes métodos que você pode usar para carregar seus resultados, consulte Fazer o upload de arquivo SARIF para o GitHub.

Para obter detalhes específicos sobre como carregar seus resultados para GitHub usando o CodeQL CLI, consulte Carregando resultados da análise do CodeQL para GitHub.

Por padrão, code scanning espera um arquivo de resultados SARIF por análise para um repositório. Consequentemente, quando se faz o upload de um segundo arquivo SARIF para um compromisso, ele é tratado como uma substituição do conjunto original de dados. Uma sugestão é carregar dois arquivos SARIF diferentes para uma análise quando, por exemplo, sua ferramenta de análise gera um arquivo SARIF diferente para cada linguagem analisada ou para cada conjunto de regras usado. Se quiser carregar mais de um conjunto de resultados para um commit em um repositório, você deverá identificar cada conjunto de resultados como um conjunto exclusivo. A maneira de especificar uma categoria para um upload de SARIF varia de acordo com o método de análise.