github / github/codeql

Python extractor reports parse errors for files no longer in the scanned commit

Abierto
#22,579 0 comentarios 0 reacciones 0 asignados Ver en GitHub
question
Lenguaje dominante
CodeQL
Estrellas
10.1k
Forks
2.1k
Merge medio
2 d 15 h
PR fusionados (30 d)
141

Descripción

## Setup

- CodeQL version: 2.27.0
- Language: Python 3.13
- GitHub default CodeQL analysis (Advanced Security > Code scanning > Default setup)
- Repo (private): https://github.com/lumin-ai/lumin-bot

## Observed behavior

CodeQL reports parse errors about two Python files. Here's a log sample (I've replaced my actual filenames with `foo.py` and `bar.py`):

Analysis produced the following diagnostic information:
##[group]Could not process some files due to syntax errors (2 results)
* foo.py#L0C0:0: A parse error occurred while processing `foo.py`, and as a result this file could not be analyzed. Check the syntax of the file using the `python -m py_compile` command and correct any invalid syntax.
* bar.py#L0C0:0: A parse error occurred while processing `bar.py`, and as a result this file could not be analyzed. Check the syntax of the file using the `python -m py_compile` command and correct any invalid syntax.
##[endgroup]

## What I tried

- I ran `python -m py_compile` on both files. This check completed without errors on Python 3.7, 3.8, 3.9, 3.10, 3.11, and 3.12.
- I removed an old header from the files: `# -*- coding: future_fstrings -*-`. This header was a leftover from a Python 2 to Python 3 migration involving https://github.com/asottile-archive/future-fstrings. The warnings stayed. (I imagine, but am not sure, that this header caused the original parsing problem. These two files were the only ones in the repo that still had it.)
- I checked the files for invisible characters and for a byte order mark. The only non-ASCII characters were some bullet characters inside one docstring. I replaced them with ASCII hyphens. The warnings stayed.
- I replaced the full contents of both files with a single `pass` statement. The warnings stayed.
- *I deleted both files*. The warnings stayed. I believe these logs confirm that CodeQL scanned the commit where I deleted the files (commit 996e624 in pull request 3584):

```
##[group]Checking out the ref
[command]/usr/bin/git checkout --progress --force refs/remotes/pull/3584/head
Note: switching to 'refs/remotes/pull/3584/head'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

git switch -c

Or undo this operation with:

git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 996e624 bisect: blow away the whole python modules to see if codeql still complains [skip tests]
##[endgroup]
```

### Expected behavior

- CodeQL must not report parse errors for Python files that `python -m py_compile` accepts.
- CodeQL must not report parse errors for files that do not exist in the scanned commit.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza reproduciendo los diagnósticos del extractor de Python contra el commit 996e624, en el que se eliminaron los archivos reportados, y compara el conjunto de archivos escaneados por el extractor con el commit comprobado. Usa `python -m py_compile` como línea base de sintaxis. Se considera terminado cuando los archivos aceptados no producen errores de análisis falsos y los archivos eliminados no se reportan.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
devtools
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Activo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.