forcedotcom / forcedotcom/code-analyzer
[BUG][code-analyzer] The engine with name 'sfge' threw an unexpected error
- 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
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