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.