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

Ouverte
#22,579 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
devtools

Piste de recherche

Commencez par reproduire les diagnostics de l’extracteur Python sur le commit 996e624, dans lequel les fichiers signalés ont été supprimés, puis comparez l’ensemble des fichiers analysés par l’extracteur avec le commit extrait. Utilisez python -m py_compile comme référence syntaxique. C’est terminé lorsque les fichiers acceptés ne produisent pas de fausses erreurs d’analyse et que les fichiers supprimés ne sont pas signalés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

question

Setup

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 <new-branch-name>
    
    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.
Langage dominant
CodeQL
Étoiles
10.1k
Forks
2.1k
Merge moyen
2 j 11 h
PR mergées (30 j)
129

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/codeql

Toutes les issues de github/codeql

Issues similaires

Plus d'issues DevTools

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.