Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Prerrequisitos
Categoría | Requisitos |
---|---|
Permisos | - Para ver un resumen de todas las alertas de un repositorio: permisos de colaborador para el repositorio. - Para descartar alertas en Seguridad Avanzada: permisos de administrador de Project. - Para administrar permisos en Advanced Security: miembro del grupo Administradores de la colección de proyectos o del grupo Advanced Security: administrar configuración con el permiso configurado en Permitir. |
Para obtener más información sobre los permisos de Advanced Security, consulte Administrar permisos de Advanced Security.
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:
- 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
yAdvancedSecurity-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.
- 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
- 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.
- 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
- Quite el paso AutoBuild y, en su lugar, configure pasos de compilación específicos para los lenguajes compilados en las canalizaciones.
- Consulte las instrucciones de configuración que se indican en Configuración de GitHub Advanced Security para Azure DevOps.
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:
- Consulte las directrices o los scripts de configuración que se indican en Configuración de GitHub Advanced Security para Azure DevOps.
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
yswift
.
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:
- Comprobación de vulnerabilidades detectadas
- Considere la posibilidad de que el código no tenga vulnerabilidades. Si se esperan vulnerabilidades pero no se detectan, continúe con la comprobación.
- Revisión de la configuración del conjunto de consultas
- Confirme el conjunto de consultas que se está usando 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.
- 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 AdvancedSecurity-Codeql-Analyze@1
tarea se muestra This job was abandoned ... we lost contact with the agent
y usa un agente hospedado de Microsoft, la tarea alcanza el tiempo de espera integrado de seis horas para los agentes hospedados de pago. En su lugar, podría 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 estos permisos se quitan 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 del repositorio, conceda estos permisos manualmente.
Pasos para solucionar problemas:
- Conceda el permiso
Advanced Security: View alerts
yAdvanced 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 esProject Collection Build Service ([Organization Name])
.
Publicación de resultados del análisis de código en el repositorio no deseado
Si tiene una definición de canalización hospedada en un repositorio y el código fuente que va a examinar GitHub Advanced Security estaba en otro, los resultados se pueden procesar y enviar al repositorio incorrecto, publicar en el repositorio que contiene la definición de canalización en lugar del repositorio de código fuente.
Para habilitar el enrutamiento de resultados previsto, establezca la variable de entorno de la canalización advancedsecurity.publish.repository.infer: true
para inferir el repositorio desde el cual publicar en el directorio de trabajo.
trigger:
- main
resources:
repositories:
# PipelineRepo: The repository containing the pipeline definition.
# This is optional and only needed if you plan to reference files or scripts from this repo.
- repository: PipelineRepo
type: git
name: DevOpsPipelineRepo
ref: refs/heads/main
trigger:
- main
# SourceRepo: The repository where scanning and publishing will occur.
- repository: SourceRepo
type: git
name: code-to-analyze-repo
ref: refs/heads/main
trigger:
- main
jobs:
- job: "CodeQLScan"
displayName: "CodeQL Scanning with Inferred Publishing"
variables:
# Enable repository inference
advancedsecurity.publish.repository.infer: true
steps:
# Checkout the SourceRepo
- checkout: SourceRepo
# Initialize CodeQL
- task: AdvancedSecurity-Codeql-Init@1
displayName: "Initialize CodeQL"
inputs:
languages: "python,javascript" # Adjust based on repository languages
# Perform CodeQL analysis
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: "Analyze Code with CodeQL"
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 agente, por ejemplo, C:/agent/_work/_tool
. Como alternativa, puede implementar manualmente los pasos siguientes:
- Elija la última agrupación de versiones de CodeQL en GitHub.
- 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 dev2.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. - 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 archivox64.complete
debería ser./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete
.
¿Cómo puedo definir explícitamente el repositorio para publicar alertas de análisis de código?
- Use la variable de entorno de canalización
advancedsecurity.publish.repository.infer: true
para deducir el repositorio para publicar desde el repositorio en el directorio de trabajo. - Como otra opción, si no desactive explícitamente un repositorio o use un alias para desactive el repositorio, use la variable .
advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['YourRepositoryAlias']) ]
Para obtener más información, consulte las notas de la versión.
Artículos relacionados
- Configuración del examen de código
- Configurar el escaneo de dependencias
- Configuración del examen de secretos
- Administración de GitHub Advanced Security para Azure DevOps