forcedotcom / forcedotcom/code-analyzer

[BUG][code-analyzer] The engine with name 'sfge' threw an unexpected error

Abierto
#1,967 5 comentarios 0 reacciones 0 asignados Ver en GitHub
BUG P3
Lenguaje dominante
TypeScript
Estrellas
240
Forks
52
Merge medio
1 d 23 h
PR fusionados (30 d)
5

Descripción

### Have you tried to resolve this issue yourself first?

- [x] I confirm I have gone through the above steps and still have an issue to report.

### Bug Description

When running the SFGE engine using

[code-scan-sfge.csv](https://github.com/user-attachments/files/24383801/code-scan-sfge.csv)

[code-analyzer-sfge.yml](https://github.com/user-attachments/files/24383828/code-analyzer-sfge.yml)

[sfca-2025_12_30_15_43_01_855.log](https://github.com/user-attachments/files/24383850/sfca-2025_12_30_15_43_01_855.log)

Related log specific for SFGE is below, which suggests that the following code is an issue

`for (Contact c : cList ?? new List()) {}`

Specifically i think it is the ?? within the for loop, since moving it out seems to stop this error happening.

Overall, it seems to be two things
1) Massive failures which make no sense unless really digging into issues
2) Issue with parsing (the AST tree?) to Apex class for something which is valid apex

### Output / Logs

```shell
2025-12-30 15:44:44 ERROR Sfge:159 - Unexpected exception while loading graph
com.salesforce.exception.UnexpectedException: vp[FirstChild->false], vp[BeginLine->313], vp[DefiningType_CaseSafe->APEXCLASSWITHISSUE...], vp[LastChild->false], vp[DefiningType->APEXCLASSWITHISSUE...], vp[EndLine->313], vp[childIdx->3], vp[BeginColumn->3]
at com.salesforce.graph.build.GremlinUtil.getChildren(GremlinUtil.java:60)
at com.salesforce.graph.build.MethodPathBuilderVisitor.visitForEachStatement(MethodPathBuilderVisitor.java:235)
at com.salesforce.graph.build.MethodPathBuilderVisitor._visit(MethodPathBuilderVisitor.java:130)
at com.salesforce.graph.build.MethodPathBuilderVisitor._visit(MethodPathBuilderVisitor.java:159)
at com.salesforce.graph.build.MethodPathBuilderVisitor.apply(MethodPathBuilderVisitor.java:97)
at com.salesforce.graph.build.AbstractApexVertexBuilder.afterInsert(AbstractApexVertexBuilder.java:169)
at com.salesforce.graph.build.AbstractApexVertexBuilder.buildVertices(AbstractApexVertexBuilder.java:153)
at com.salesforce.graph.build.AbstractApexVertexBuilder.buildVertices(AbstractApexVertexBuilder.java:125)
at com.salesforce.graph.build.AbstractApexVertexBuilder.buildVertices(AbstractApexVertexBuilder.java:35)
at com.salesforce.graph.build.CustomerApexVertexBuilder.build(CustomerApexVertexBuilder.java:21)
at com.salesforce.graph.build.Util.buildGraph(Util.java:39)
at com.salesforce.graph.ops.GraphUtil.loadSourceFilesAndFolders(GraphUtil.java:170)
at com.salesforce.Sfge$Dependencies.loadSourceFilesAndFoldersToGraph(Sfge.java:249)
at com.salesforce.Sfge.execute(Sfge.java:153)
at com.salesforce.Sfge.process(Sfge.java:103)
at com.salesforce.Sfge.main(Sfge.java:71)
```

### Steps To Reproduce

`sf code-analyzer run --config-file ./code-analyzer-sfge.yml --view detail -f codescan/code-scan-sfge.csv -r sfge -t app\classes\class.cls`

### Expected Behavior

If failing, then fail with a meaningful error, but in this case I don't believe an error is correct

### Operating System

Windows 11

### Salesforce CLI Version

@salesforce/cli/2.116.6 win32-x64 node-v24.8.0

### Code Analyzer Plugin (code-analyzer) Version

code-analyzer 5.7.1 (5.7.1)

### Node Version

v24.8.0

### Java Version

openjdk version 21.0.8

### Python Version

Python 3.13.7

### Additional Context (Screenshots, Files, etc)

_No response_

### Workaround

_No response_

### Urgency

Low

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Reproduce el fallo con code-analyzer-sfge.yml, code-scan-sfge.csv y el comando CLI proporcionado; después inspecciona GremlinUtil.java y MethodPathBuilderVisitor.java, especialmente visitForEachStatement. Compara el tratamiento del AST para la expresión de coalescencia de null que falla con la solución alternativa que funciona. La tarea estará terminada cuando Apex válido ya no provoque la excepción inesperada al cargar el grafo y exista cobertura para este caso.

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

Evaluación

Stack tecnológico
java
Área
compilers, tooling
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Activo
Claridad
Bastante claro
Aptitud para principiantes
52/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.