{"meta":{"title":"Verificação de código do CodeQL para linguagens compiladas","intro":"Entenda como CodeQL analisa idiomas compilados, as opções de build disponíveis e saiba como você pode personalizar o processo de geração de banco de dados, se necessário.","product":"Qualidade de segurança e código","breadcrumbs":[{"href":"/pt/code-security","title":"Qualidade de segurança e código"},{"href":"/pt/code-security/how-tos","title":"How-tos"},{"href":"/pt/code-security/how-tos/find-and-fix-code-vulnerabilities","title":"Localizar e corrigir vulnerabilidades de código"},{"href":"/pt/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration","title":"Gerenciar sua configuração"},{"href":"/pt/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration/codeql-code-scanning-for-compiled-languages","title":"CodeQL para linguagens compiladas"}],"documentType":"article"},"body":"# Verificação de código do CodeQL para linguagens compiladas\n\nEntenda como CodeQL analisa idiomas compilados, as opções de build disponíveis e saiba como você pode personalizar o processo de geração de banco de dados, se necessário.\n\n## Comparar modos de construção\n\n<div class=\"ghd-tool rowheaders\">\n\n| Característica do modo de compilação                                      | Nenhum                       | Compilação automática             | Manual                  |\n| ------------------------------------------------------------------------- | ---------------------------- | --------------------------------- | ----------------------- |\n| Usado pela configuração padrão e para habilitação em nível de organização | Sim (C/C++, C#, Java e Rust) | Sim, onde `none` não é compatível | No                      |\n| A análise é bem-sucedida sem a configuração do usuário                    | Sim                          | Variable                          | No                      |\n| Completude da análise                                                     | Código gerado não analisado  | Variable                          | Controlado pelo usuário |\n| Precisão da análise                                                       | Bom                          | Bom                               | Best                    |\n\n</div>\n\n## Escolher um modo de build\n\nQuando você estiver configurando code scanning pela primeira vez ou em vários repositórios, é melhor usar a configuração padrão. A configuração padrão usa o método mais simples disponível para gerar um CodeQL banco de dados e analisar seu código, para que você possa começar a corrigir alertas assim que possível. Depois de resolver os alertas iniciais, convém alternar para a configuração avançada com um processo de compilação manual para repositórios de alto risco.\n\nPara obter comportamentos `autobuild` específicos da linguagem, requisitos do executor e detalhes do modo de compilação para linguagens compiladas, consulte [Opções e etapas de build do CodeQL para idiomas compilados](/pt/code-security/reference/code-scanning/codeql/codeql-build-options-and-steps-for-compiled-languages).\n\n## Usar vários modos de build em um repositório de vários idiomas\n\nPara repositórios com várias linguagens compiladas, você pode usar diferentes modos de compilação para diferentes idiomas. Por exemplo, se o repositório contiver C/C++, C# e Java, convém fornecer etapas de build manuais para um idioma (aqui C/C++). Este fluxo de trabalho especifica um modo de compilação diferente para cada idioma.\n\n```yaml\nstrategy:\n  matrix:\n    include:\n      # Analyzes C and C++ code using the commands in `Build C and C++ code`\n      - language: c-cpp\n        build-mode: manual\n      # Analyzes C# code by automatically detecting a build\n      - language: csharp\n        build-mode: autobuild\n      # Analyzes Java code directly from the codebase without a build\n      - language: java-kotlin\n        build-mode: none # analyzes Java only\nsteps:\n- name: Checkout repository\n  uses: actions/checkout@v5\n\n# Initializes CodeQL tools and creates a codebase for analysis.\n- name: Initialize CodeQL\n  uses: github/codeql-action/init@v4\n  with:\n    languages: ${{ matrix.language }}\n- if: ${{ matrix.build-mode == 'manual' }}\n  name: Build C and C++ code\n  run: |\n    echo 'If you are using a \"manual\" build mode for one or more of the' \\\n      'languages you are analyzing, replace this with the commands to build' \\\n      'your code, for example:'\n    echo ' make bootstrap'\n    echo ' make release'\n    exit 1\n```\n\nPara obter informações sobre os idiomas, bibliotecas e estruturas com suporte na versão mais recente, CodeQLconsulte [linguagens e estruturas com suporte](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks) na CodeQL documentação. Para obter informações sobre os requisitos do sistema para executar a versão mais recente, CodeQLconsulte [os requisitos](https://codeql.github.com/docs/codeql-overview/system-requirements/#additional-software-requirements) do CodeQL sistema na documentação.\n\n## Habilitar o cache de dependência para CodeQL\n\nPara os fluxos de trabalho de configuração padrão, o cache de dependência é habilitado apenas para GitHubexecutores hospedados em repositórios públicos e privados.\n\nPara fluxos de trabalho de configuração avançada, o cache de dependências está desativado por padrão. Para habilitar o cache de dependência CodeQL, utilize a configuração `dependency-caching` para a ação CodeQL em seu fluxo de trabalho de configuração avançada. Esta configuração aceita os seguintes valores:\n\n* `false`\n  /\n  `none`\n  /\n  `off`: o cache de dependências está desativado (padrão).\n* `restore`: restaure apenas os caches existentes, não armazene novos caches.\n* `store`: armazene apenas novos caches, não restaure caches existentes.\n* `true`\n  /\n  `full`\n  /\n  `on`: restaurar caches existentes e armazenar novos caches.\n\nPor exemplo, as seguintes configurações habilitariam o cache de dependência para a ação CodeQL :\n\n```yaml\n    # Initializes CodeQL with dependency caching enabled\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v4\n      with:\n        languages: java\n        dependency-caching: true\n```\n\n## Usar o `none` modo de compilação para CodeQL\n\nPara C/C++, C#, Java e Rust, CodeQL cria um banco de dados sem exigir um build ao habilitar a configuração padrão para code scanning a menos que o repositório também inclua código Kotlin. Se um repositório contiver código Kotlin além de código Java, a configuração padrão é habilitada com o processo de construção automática porque a análise de Kotlin exigirá uma construção.\n\nA criação de um CodeQL banco de dados sem um build poderá produzir resultados menos precisos do que usar `autobuild` ou etapas manuais de build se:\n\n* Os scripts de compilação não podem ser consultados para obter informações de dependência, e as suposições de dependência são imprecisas.\n* O repositório normalmente gera código durante o processo de compilação.\n\nPara usar o `autobuild` ou etapas de compilação manuais, é possível usar a configuração avançada.\n\n> \\[!NOTE] Para Java análise, se `build-mode` estiver definido como `none` e o código Kotlin for encontrado no repositório, o código Kotlin não será analisado e um aviso será produzido. Consulte [Opções e etapas de build do CodeQL para idiomas compilados](/pt/code-security/reference/code-scanning/codeql/codeql-build-options-and-steps-for-compiled-languages#building-java-and-kotlin).\n\n## Use `autobuild` para CodeQL\n\nA ação CodeQL usa o `autobuild` para analisar linguagens compiladas nos seguintes casos.\n\n* A configuração padrão está habilitada e o idioma não suporta a compilação `none` (com suporte para C/C++, C#, Java e Rust).\n* A configuração avançada está habilitada e o fluxo de trabalho especifica `build-mode: autobuild`.\n* A configuração avançada está habilitada e o fluxo de trabalho tem uma etapa de compilação automática para o idioma usando a ação `autobuild` (`github/codeql-action/autobuild@v4`).\n\n### Use a opção `build-mode`\n\n```yaml\n# Initializes the CodeQL tools for scanning.\nname: Analyze\nstrategy:\n  matrix:\n    include:\n      # Analyze C and C++ code\n      - language: c-cpp\n        build-mode: autobuild\n      # Analyze Go code\n      - language: go\n        build-mode: autobuild\n\nsteps:\n  - uses: github/codeql-action/init@v4\n    with:\n      languages: ${{ matrix.language }}\n      build-mode: ${{ matrix.build-mode }}\n```\n\n### Usar a etapa de Compilação Automática\n\n```yaml\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v4\n      with:\n        languages: ${{ matrix.language }}\n\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@v4\n```\n\n## Especificar as etapas de compilação manualmente\n\nVocê só pode especificar etapas de compilação manual se tiver ativado a configuração avançada. Consulte \\[link para a documentação]. [Como definir a configuração avançada para verificação de código](/pt/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-a-repository).\n\nSe `autobuild` falhar ou se você quiser analisar um conjunto diferente de arquivos de origem daqueles criados pelo processo `autobuild`, será necessário fazer o seguinte:\n\n* Se o fluxo de trabalho especificar um modo de compilação para a linguagem, altere o modo de compilação para `manual`.\n* Se o fluxo de trabalho contiver uma etapa de `autobuild`, remova ou comente a etapa de `autobuild` no fluxo de trabalho.\n\nEm seguida, descompacte a etapa `run` e especifique manualmente o processo de build a ser usado. Para C/C++, C#, Go, Java, Kotlin e Swift, CodeQL analisará todo o código-fonte gerado pelas etapas de compilação especificadas.\n\nAtualize o fluxo de trabalho para definir `build-mode` como `manual`.\n\n```yaml\n# Initializes the CodeQL tools for scanning.\n- name: Initialize CodeQL\n- uses: github/codeql-action/init@v4\n  with:\n    languages: ${{ matrix.language }}\n    build-mode: manual\n- uses: github/codeql-action/analyze@v4\n  with:\n    category: \"/language:${{ matrix.language }}\"\n```\n\nComo alternativa, atualize seu fluxo de trabalho para comentar a etapa “compilação automática”.\n\n```yaml\n    # Autobuild attempts to build any compiled languages.\n    # - name: Autobuild\n    #  uses: github/codeql-action/autobuild@v4\n```\n\n### Adicionar comandos de build\n\nQuando a compilação manual estiver ativada, remova o comentário da etapa `run` no fluxo de trabalho e adicione comandos de compilação adequados ao seu repositório. A etapa `run` executa programas de linha de comando usando o shell do sistema operacional. Você pode modificar esses comandos e adicionar mais comandos para personalizar o processo de compilação.\n\n```yaml\n- run: |\n    make bootstrap\n    make release\n```\n\nPara obter mais informações sobre a palavra-chave `run`, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun).\n\n<!-- For \"no-build\" this is covered earlier in the article under \"About CodeQL build modes\". -->\n\nSe você adicionou etapas manuais no processo de build para linguagens compiladas e code scanning ainda não está funcionando no repositório, entre em contato conosco por meio do [Portal de suporte do GitHub](https://support.github.com)."}