Existem várias abordagens que você pode experimentar para reduzir o tempo de compilação em uma análise do code scanning.
Usar criações da matriz para paralelizar a análise
Se estiver usando executores hospedados pela GitHub para as suas análises do code scanning, considere atualizar para executores avançados. Estes são executores hospedados pela GitHub com mais RAM, CPU e espaço em disco em comparação aos executores padrão. Para obter mais informações sobre executores avançados e code scanning, consulte "Sobre executores maiores" e "Configurando executores maiores para configuração padrão".
Se você estiver usando executores auto-hospedados para executar a análise do code scanning, você pode aumentar a memória ou o número de núcleos nesses executores. Se você estiver usando o CodeQL com configuração avançada para suas análises, reveja os recursos de hardware recomendados para o CodeQL para garantir que os seus executores auto-hospedados atendam a esses requisitos. Para obter mais informações, confira "Recursos de hardware recomendados para executar o CodeQL".
Usar criações da matriz para paralelizar a análise
Para acelerar as análises de fluxos de trabalho que envolvem vários trabalhos, você pode modificar seu fluxo de trabalho para usar uma matriz. Para obter mais informações, confira "Running variations of jobs in a workflow".
O Fluxo de trabalho de análise do CodeQL padrão usa uma matriz de linguagens, o que faz com que a análise de cada linguagem seja executada em paralelo. No entanto, se estiver usando o CodeQL com configuração avançada e tiver especificado as linguagens que deseja analisar diretamente na etapa "Inicializar CodeQL", a análise de cada linguagem acontecerá sequencialmente. Nessa configuração, você pode acelerar sua análise modificando o fluxo de trabalho de configuração avançada para usar uma matriz. Para obter um exemplo, consulte a extração de fluxo de trabalho em "Algumas linguagens não foram analisadas com a configuração avançada do CodeQL".
Reduz a quantidade de código em análise em um único fluxo de trabalho
O tempo de análise é normalmente proporcional à quantidade de código que está sendo analisado. Se estiver usando o CodeQL com configuração avançada, você poderá reduzir o tempo de análise reduzindo a quantidade de código que está sendo analisado de uma só vez. Por exemplo, excluindo o código de teste ou dividindo a análise em vários fluxos de trabalho que analisam apenas um subconjunto do seu código de cada vez.
Para linguagens compiladas como Java, Kotlin, Go, C, C++ e C#, o CodeQL analisa todo o código criado durante a execução do fluxo de trabalho. Para limitar a quantidade de código analisada, compile apenas o código que deseja analisar especificando etapas de build próprias em um bloco run
. Combine a especificação de etapas de build próprias com o uso dos filtros paths
e paths-ignore
nos eventos pull_request
e push
para garantir que o fluxo de trabalho seja executado somente quando o código específico for alterado. Para obter mais informações, confira "Sintaxe de fluxo de trabalho para o GitHub Actions".
Para linguagens como JavaScript, Python e TypeScript, que o CodeQL analisa sem compilar o código-fonte, você pode especificar opções de configuração adicionais para limitar a quantidade de código a ser analisado. Para obter mais informações, confira "Personalizando a configuração avançada para varredura de código".
Se você dividir suas análises do CodeQL em vários fluxos de trabalho, ainda assim recomendaremos que você tenha, pelo menos, um fluxo de trabalho que seja executado em um schedule
que analise todo o código no repositório. Já que o CodeQL analisa os fluxos de dados entre os componentes, alguns comportamentos de segurança complexos só podem ser detectados em uma criação completa.
Execução somente durante um evento schedule
Você pode perceber que sua análise é lenta durante eventos de push
ou pull_request
. Em caso afirmativo, é possível definir sua análise para acionar apenas o evento schedule
. Se estiver usando o CodeQL para suas análises do code scanning, você poderá configurá-lo com um fluxo de trabalho de configuração avançada, mas não na configuração padrão. Para obter mais informações, confira "Entendendo o GitHub Actions".
Verificar quais consultas ou regras o fluxo de trabalho executa
Outra opção para reduzir o tempo de análise é executar apenas as consultas ou regras que você considera essenciais em fluxos de trabalho executados em solicitações de pull. Se você usa uma ferramenta de terceiros para o code scanning, consulte a documentação da ferramenta.
No CodeQL, há dois conjuntos de consultas principais disponíveis para cada linguagem. Se você otimizar o build do banco de dados do CodeQL mas mesmo assim o processo continuar sendo muito longo, você poderá reduzir o número de consultas executadas. O conjunto de consultas padrão é executado automaticamente: ele fornece o melhor compromisso possível entre qualidade e velocidade.
Se você estiver usando o CodeQL com configuração avançada, talvez esteja executando consultas extras ou conjuntos de consultas, além das consultas padrão. Verifique se o fluxo de trabalho define um conjunto de consultas adicional ou consultas adicionais a serem executadas usando o elemento queries
. Você pode experimentar desabilitar o conjunto de consultas adicionais ou consultas. Para obter mais informações, confira "Personalizando a configuração avançada para varredura de código".