Compartir vía


Solución de problemas de análisis de código

Por lo general, si se producen errores con la ejecución de CodeQL, la CLI de CodeQL notifica el estado de cada comando que se ejecuta como código de salida. El código de salida proporciona información para los comandos posteriores o para otras herramientas que se basan en la CLI de CodeQL. Para obtener más información sobre los detalles del código de salida, consulte Códigos de salida.

Error: comando de CodeQL "database finalize" (32)

Este error indica un problema al finalizar la creación de la base de datos de CodeQL, posiblemente debido a errores de extracción o a pasos de compilación que faltan.

Pasos para solucionar problemas:

  1. Comprobación de que el código existe y que está compilado
    • En el caso de los lenguajes compilados, compruebe que el proceso de compilación está compilando código y que está ejecutando entre las tareas AdvancedSecurity-Codeql-Init y AdvancedSecurity-Codeql-Analyze. Los comandos de compilación comunes y las marcas necesarias (como clean no-cache/no-daemon) se pueden encontrar aquí en Especificación de comandos de compilación.
    • En el caso de los lenguajes interpretados, confirme que hay código fuente para el idioma especificado en el proyecto.
  2. Comprobación de errores de extracción
    • Compruebe si los errores de extracción afectan al estado de la base de datos de CodeQL.
    • Revise el archivo de registro para ver si hay errores y advertencias de extracción para evaluar el estado general de la base de datos.
  3. Investigación de errores abrumadores
    • Si la mayoría de los archivos encuentran errores de extracción, investigue más para profundizar en la causa principal de la extracción incorrecta.

Error: script de autobuild (1)

Este error describe un error de compilación automática, lo que sugiere un problema con la configuración o definición del análisis de código.

Pasos para solucionar problemas:

  • Configuración de pasos de compilación

Error: directorios de codeQL no encontrados en la caché de herramientas del agente

Este error indica un problema con la instalación de CodeQL para agentes autohospedados.

Pasos para solucionar problemas:

Error: no se ha establecido la variable de canalización de lenguaje

Este error se produce al intentar ejecutar CodeQL sin establecer la variable de canalización que especifica qué lenguajes se analizarán.

Pasos para solucionar problemas:

  • Establecimiento de la variable de canalización de lenguaje
    • Asegúrese de que la variable de canalización de lenguaje esté configurada correctamente. Consulte las instrucciones de configuración que se indican en Configuración de GitHub Advanced Security para Azure DevOps.
    • Entre los lenguajes admitidos se encuentran los siguientes: csharp, cpp, go, java, javascript, python, ruby y swift.

CodeQL no devuelve ningún resultado

En esta sección se proporcionan instrucciones para situaciones en las que el análisis de CodeQL no produce ningún resultado.

Pasos para solucionar problemas:

  1. Comprobación de vulnerabilidades detectadas
    • Considere la posibilidad de que el código no tenga realmente ninguna vulnerabilidad. Si se esperan vulnerabilidades pero no se detectan, continúe con la comprobación.
  2. Revisión de la configuración del conjunto de consultas
    • Confirme el conjunto de consultas que se está utilizando y considere la posibilidad de cambiar a un conjunto más completo si es necesario.
    • Como alternativa, se pueden crear conjuntos de consultas personalizados para el análisis personalizado.
  3. Ajuste de los permisos para ver los resultados
    • Asegúrese de que se conceden los permisos adecuados, al menos en el nivel de colaborador, para acceder a los resultados del análisis. Para obtener más información, consulte Permisos avanzados de seguridad.

Tiempo de espera de CodeQL

Si la tarea AdvancedSecurity-Codeql-Analyze@1 muestra This job was abandoned ... we lost contact with the agent y usa un agente de Microsoft hospedado, la tarea alcanza el tiempo de espera integrado de seis horas para los agentes hospedados de pago. En su lugar, puede intentar ejecutar análisis en un agente autohospedado.

Permisos de tarea de examen de código

La tarea de compilación de análisis de código usa la identidad de canalización para llamar a las API de REST de Advanced Security. De forma predeterminada, las canalizaciones del mismo proyecto tienen acceso para cargar el archivo SARIF generado mediante la ejecución de análisis de CodeQL. Si quita esos permisos de la cuenta de servicio de compilación o si tiene una configuración personalizada (por ejemplo, una canalización hospedada en un proyecto diferente al repositorio), debe conceder estos permisos manualmente.

Pasos para solucionar problemas:

  • Conceda el permiso Advanced Security: View alerts y Advanced Security: Manage and dismiss alerts a la cuenta de servicio de compilación que se usa en la canalización, que para las canalizaciones con ámbito de proyecto es [Project Name] Build Service ([Organization Name]), y para canalizaciones con ámbito de recopilación es Project Collection Build Service ([Organization Name]).

Instalación manual del lote CodeQL en el agente autohospedado

Instale la agrupación CodeQL en la caché de herramientas del agente mediante el script de instalación de la arquitectura, disponible en GitHub. Estos scripts requieren que la $AGENT_TOOLSDIRECTORY variable de entorno se establezca en la ubicación del directorio de herramientas del agente en el mismo, por ejemplo, C:/agent/_work/_tool. Como alternativa, puede implementar manualmente los pasos siguientes:

  1. Elija la última agrupación de versiones de CodeQL en GitHub.
  2. Descargue y descomprima la agrupación en el siguiente directorio dentro del directorio de herramientas del agente, normalmente ubicado en _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Con la versión actual de v2.16.0, la carpeta se llamaría ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. Más información sobre el directorio de herramientas del agente.
  3. Cree un archivo vacío llamado x64.complete dentro de la carpeta ./CodeQL/0.0.0-[codeql-release-bundle-tag]. Siguiendo el ejemplo anterior, la ruta de acceso del archivo final al archivo x64.complete debería ser ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.