Missing dependency link, if function call happens within the arguments of a function
pkgnet::CreatePackageReport misses function calls that happens within the arguments of a function.
For instance GetGruffiClusteringName is a helper to guess granuleRes in ParseGruffiGranuleScoreName. See more in gruffi
ParseGruffiGranuleScoreName <- function(goID, obj = combined.obj, granuleRes = GetGruffiClusteringName(obj)) {
Stringendo::kppu(granuleRes, "cl.av", make.names(goID))
}
I did:
pkgnet_result <- pkgnet::CreatePackageReport(package.name)
fun_graph <- pkgnet_result$FunctionReporter$pkg_graph$'igraph'
PackageTools::convert_igraph_to_mermaid(graph = fun_graph, openMermaid = T, copy_to_clipboard = T)
The result: https://github.com/jn-goe/gruffi/blob/main/Functions.md
The problem
The network is missing all, but one of the links to GetGruffiClusteringName(), bc all, but one uses were in the argument lines!
Thanks for the report. Are you interested in trying to contribute this?
Thanks James, looking at your codebase, and its structure, and I am clearly not at well versed enough in R.
As far as i understood the problem is using body(), e.g. in FunctionReporter() and the solution would be to use body() and formals() to parse the argument list as well. But body() appears at multiple locations so I am not confident.
> # Define a simple function
> myFunction <- function(x, y = 1, argX = .myfun(x)) {
+ return(x + y)
+ }
> # Use formals() to get the arguments of the function
> (formals(myFunction))
$x
$y
[1] 1
$argX
.myfun(x)
This may be not too useful, I am sorry for that.
It's been 2 years since we made any meaningful changes to the code in this library... everything in the current state could be changed if there was a need!
If you're not interested in contributing at this time, we'll leave it here as a feature request. This project isn't being actively maintained, but occasionally one of us decides to put a weekend into it, so it might be picked up in the future.
Okay, thank you that's fair! I will try to allocate time - as said, the package code is more professional than what I write so it may take time.