Skip to main content

A análise de verificação de código está demorando muito

Você pode ajustar sua code scanning configuração para minimizar o tempo de análise.

Há várias abordagens que você pode adotar para reduzir o tempo de compilação em uma análise code scanning.

Usar criações da matriz para paralelizar a análise

Se você estiver usando runners hospedados por GitHub na sua análise do code scanning, considere atualizar para executores avançados. Esses são runners hospedados em GitHub com mais RAM, CPU e espaço em disco do que os runners padrão. Para obter mais informações sobre executores avançados e code scanning, consulte Usando executores maiores e Configurando executores maiores para configuração padrão.

Se você estiver usando executores auto-hospedados para executar code scanning a análise, poderá aumentar a memória ou o número de núcleos nesses executores. Se você estiver usando CodeQL com configuração avançada na sua análise, examine os recursos de hardware recomendados para CodeQL para garantir que seus executores auto-hospedados atendam a esses requisitos. Para saber mais, 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 saber mais, confira Executando variações de tarefas em um workflow.

O padrão Fluxo de trabalho de análise do CodeQL usa uma matriz de idiomas, o que faz com que a análise de cada idioma seja executada em paralelo. No entanto, se você estiver usando CodeQL a configuração avançada e tiver especificado os idiomas que deseja analisar diretamente na etapa "Inicializar CodeQL", a análise de cada idioma ocorrerá 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 um exemplo, veja o extrato do 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 você estiver usando CodeQL com configuração avançada, poderá reduzir o tempo de análise diminuindo a quantidade de código analisada 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.

Ao usar build-mode: autobuild oubuild-mode: manual, para linguagens compiladas como Java, Kotlin, Go, C, C++e C#, 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 saber mais, confira Sintaxe de fluxo de trabalho para o GitHub Actions.

Para linguagens como JavaScript, Python e TypeScript, que CodeQL analisam sem compilar o código-fonte ou para um idioma compilado usandobuild-mode: none, você pode especificar opções de configuração adicionais para limitar a quantidade de código a ser analisado. Para saber mais, confira Opções de configuração de fluxo de trabalho para verificação de código.

Se você dividir sua CodeQL análise em vários fluxos de trabalho, ainda recomendamos que você tenha pelo menos um fluxo de trabalho que seja executado em um schedule que analise todo o código em seu repositório. Como CodeQL analisa fluxos de dados entre componentes, alguns comportamentos de segurança complexos só podem ser detectados em um build completo.

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 você estiver usando CodeQL para sua code scanning análise, poderá configurá-lo com um fluxo de trabalho de instalação avançado, mas não na configuração padrão. Para saber mais, confira Noções básicas sobre 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ê usar uma ferramenta de terceiros para code scanning, deve consultar a documentação da ferramenta.

Em CodeQL, há dois pacotes de consultas principais disponíveis para cada idioma. Se você tiver otimizado o build do CodeQL banco de dados e o processo ainda for 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 CodeQL com configuração avançada, poderá estar 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 saber mais, confira Opções de configuração de fluxo de trabalho para verificação de código.