Skip to main content

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

Você pode analisar o código com a CodeQL CLI ou outra ferramenta em um sistema de integração contínua de terceiros e carregar os resultados em GitHub. Os alertas de code scanning resultantes são exibidos junto com todos os alertas gerados dentro de 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 Enterprise Cloud com GitHub Advanced Security habilitado

Sobre o uso do code scanning com seu sistema de CI existente

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

Você pode adicionar a CodeQL CLI ao seu sistema de terceiros ou usar outra ferramenta de análise estática de terceiros que possa produzir resultados como dados SARIF (Static Analysis Results Interchange Format) 2.1.0. Para obter mais informações sobre o formato SARIF compatível, consulte "Suporte SARIF para a varredura de código".

A CodeQL CLI é uma ferramenta de linha de comando autônoma que você pode usar para analisar o código. Para obter mais informações, confira "Sobre a CLI do CodeQL".

Os alertas para o code scanning gerados externamente são exibidos da mesma forma que os alertas para o code scanning que gerados dentro do GitHub. Se você executar a verificação de código usando várias configurações, algumas vezes um alerta terá várias origens de análise. Se um alerta tiver várias origens de análise, você poderá ver o status do alerta para cada origem de análise na página de alertas. Para obter mais informações, consulte "Sobre alertas de digitalização de códigos".

Observação: há suporte para o upload de dados SARIF a serem exibidos como resultados da code scanning no GitHub Enterprise Cloud nos repositórios pertencentes à organização com o GitHub Advanced Security habilitado e em repositórios públicos no GitHub.com. Para obter mais informações, 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 estiver usando a CodeQL CLI, você precisará disponibilizar todo o conteúdo do pacote da CodeQL CLI para cada servidor de CI no qual deseja executar análises do CodeQL code scanning. Para obter mais informações, confira "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ê deverá verificar o código que deseja analisar e configurar o ambiente da base de código, certificando-se de que todas as dependências estejam 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 estiver usando a CodeQL CLI, primeiro será necessário criar um banco de dados do CodeQL a partir do seu código e, em seguida, analisar esse banco de dados para produzir resultados SARIF. Para obter mais informações, confira "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 Enterprise Cloud

Cada servidor de CI precisa de um GitHub App ou personal access token para carregar os resultados no GitHub Enterprise Cloud, independentemente de você estar usando a CodeQL CLI, a API REST ou outro método. Você precisa usar um token de acesso ou um GitHub App com a permissão de gravação security_events. Se os servidores de CI já usarem um token com esse escopo para fazer check-out de repositórios do GitHub Enterprise Cloud, 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, confira "Sobre a criação de Aplicativos do GitHub" e "Gerenciar seus tokens de acesso pessoal".

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

Carregando seus resultados no GitHub Enterprise Cloud

Depois de analisar seu código, produzir resultados SARIF e garantir que você possa se autenticar no GitHub Enterprise Cloud, é possível carregar os resultados no GitHub Enterprise Cloud. 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 o upload dos seus resultados no GitHub Enterprise Cloud usando a CodeQL CLI, consulte "Como carregar os resultados da análise do CodeQL no GitHub".

Por padrão, code scanning espera um arquivo de resultados SARIF por análise de 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. Para obter mais informações, confira "Suporte SARIF para a varredura de código".