koknat / callGraph

A multi-language tool which parses source code for function definitions and calls
GNU General Public License v3.0
245 stars 28 forks source link

Feature request: support for the Julia language #3

Closed amizeranschi closed 2 years ago

amizeranschi commented 3 years ago

Hi and thanks for this useful tool!

Given that so many languages are supported, including R and Python, would it be possible to add support for Julia as well?

koknat commented 3 years ago

Hi,

I'd be happy to add Julia support Could you point me to an example .jl file on the web, which has many function calls?

On Mon, Sep 20, 2021 at 8:00 PM amizeranschi @.***> wrote:

Hi and thanks for this useful tool!

Given that so many languages are supported, including R and Python, would it be possible to add support for Julia as well?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABK7KKX5SM47SCISID6XDFDUC7YNZANCNFSM5ENKI6QQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

amizeranschi commented 3 years ago

Here are a couple of examples from Plots.jl and CUDA.jl, respectively:

https://github.com/JuliaPlots/Plots.jl/blob/master/src/utils.jl https://github.com/JuliaGPU/CUDA.jl/blob/master/src/array.jl

I hope these will be helpful and thanks for looking into this.

koknat commented 3 years ago

Thanks, this is very helpful

What does it mean when a function has '!' Base.push! is repeated in plots.jl:

function Base.push!(segments::Segments{T}, vs...) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

function Base.push!(segments::Segments{T}, vs::AVec) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

On Tue, Sep 21, 2021 at 9:29 PM amizeranschi @.***> wrote:

Here are a couple of examples from Plots.jl and CUDA.jl, respectively:

https://github.com/JuliaPlots/Plots.jl/blob/master/src/utils.jl https://github.com/JuliaGPU/CUDA.jl/blob/master/src/array.jl

I hope these will be helpful and thanks for looking into this.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-924574038, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABK7KKR2HHPKI2RWVBWGHGTUDFLS7ANCNFSM5ENKI6QQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

amizeranschi commented 3 years ago

See: https://stackoverflow.com/questions/45396685/what-does-an-exclamation-mark-mean-after-the-name-of-a-function

On Thu, Sep 23, 2021, 05:24 Chris Koknat @.***> wrote:

Thanks, this is very helpful

What does it mean when a function has '!' Base.push! is repeated in plots.jl:

function Base.push!(segments::Segments{T}, vs...) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

function Base.push!(segments::Segments{T}, vs::AVec) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

On Tue, Sep 21, 2021 at 9:29 PM amizeranschi @.***> wrote:

Here are a couple of examples from Plots.jl and CUDA.jl, respectively:

https://github.com/JuliaPlots/Plots.jl/blob/master/src/utils.jl https://github.com/JuliaGPU/CUDA.jl/blob/master/src/array.jl

I hope these will be helpful and thanks for looking into this.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-924574038, or unsubscribe < https://github.com/notifications/unsubscribe-auth/ABK7KKR2HHPKI2RWVBWGHGTUDFLS7ANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS < https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android < https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-925461991, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACYGZNGNUC74FJISOJGPNJTUDKFWFANCNFSM5ENKI6QQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

koknat commented 3 years ago

Thanks

One final question: I need to construct a regex that detects Julia function names For most languages, this include a-z A-Z 0-9 and _ For Julia, I'm adding . and $ and ! I realize that it supports a wide range of unicode, but that may be too complex for a regex. Are there any other important characters that I'm missing?

On Wed, Sep 22, 2021 at 7:30 PM amizeranschi @.***> wrote:

See:

https://stackoverflow.com/questions/45396685/what-does-an-exclamation-mark-mean-after-the-name-of-a-function

On Thu, Sep 23, 2021, 05:24 Chris Koknat @.***> wrote:

Thanks, this is very helpful

What does it mean when a function has '!' Base.push! is repeated in plots.jl:

function Base.push!(segments::Segments{T}, vs...) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

function Base.push!(segments::Segments{T}, vs::AVec) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

On Tue, Sep 21, 2021 at 9:29 PM amizeranschi @.***> wrote:

Here are a couple of examples from Plots.jl and CUDA.jl, respectively:

https://github.com/JuliaPlots/Plots.jl/blob/master/src/utils.jl https://github.com/JuliaGPU/CUDA.jl/blob/master/src/array.jl

I hope these will be helpful and thanks for looking into this.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-924574038, or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ABK7KKR2HHPKI2RWVBWGHGTUDFLS7ANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-925461991, or unsubscribe < https://github.com/notifications/unsubscribe-auth/ACYGZNGNUC74FJISOJGPNJTUDKFWFANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS < https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android < https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-925463757, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABK7KKUMYSWGZOKMUH3OCVLUDKGNNANCNFSM5ENKI6QQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

amizeranschi commented 3 years ago

I'm not sure what to say here, I'm afraid. I'm no Julia expert by any means and there seems to be a style naming guide ( https://docs.julialang.org/en/v1/manual/style-guide/), but a Google search also revealed several people who seem to contest it, for subjective reasons, so there's that.

Your suggestion seems fine for a start, so perhaps people can improve things through issue reports in needed.

On Thu, Sep 23, 2021, 20:10 Chris Koknat @.***> wrote:

Thanks

One final question: I need to construct a regex that detects Julia function names For most languages, this include a-z A-Z 0-9 and _ For Julia, I'm adding . and $ and ! I realize that it supports a wide range of unicode, but that may be too complex for a regex. Are there any other important characters that I'm missing?

On Wed, Sep 22, 2021 at 7:30 PM amizeranschi @.***> wrote:

See:

https://stackoverflow.com/questions/45396685/what-does-an-exclamation-mark-mean-after-the-name-of-a-function

On Thu, Sep 23, 2021, 05:24 Chris Koknat @.***> wrote:

Thanks, this is very helpful

What does it mean when a function has '!' Base.push! is repeated in plots.jl:

function Base.push!(segments::Segments{T}, vs...) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

function Base.push!(segments::Segments{T}, vs::AVec) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

On Tue, Sep 21, 2021 at 9:29 PM amizeranschi @.***> wrote:

Here are a couple of examples from Plots.jl and CUDA.jl, respectively:

https://github.com/JuliaPlots/Plots.jl/blob/master/src/utils.jl https://github.com/JuliaGPU/CUDA.jl/blob/master/src/array.jl

I hope these will be helpful and thanks for looking into this.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub <https://github.com/koknat/callGraph/issues/3#issuecomment-924574038 , or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ABK7KKR2HHPKI2RWVBWGHGTUDFLS7ANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-925461991, or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ACYGZNGNUC74FJISOJGPNJTUDKFWFANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-925463757, or unsubscribe < https://github.com/notifications/unsubscribe-auth/ABK7KKUMYSWGZOKMUH3OCVLUDKGNNANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS < https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android < https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-926000558, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACYGZNDW3IKTEZOSH6BB3STUDNNQDANCNFSM5ENKI6QQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

koknat commented 3 years ago

I've uploaded the Julia update Please let me know how it goes

On Thu, Sep 23, 2021 at 10:31 AM amizeranschi @.***> wrote:

I'm not sure what to say here, I'm afraid. I'm no Julia expert by any means and there seems to be a style naming guide ( https://docs.julialang.org/en/v1/manual/style-guide/), but a Google search also revealed several people who seem to contest it, for subjective reasons, so there's that.

Your suggestion seems fine for a start, so perhaps people can improve things through issue reports in needed.

On Thu, Sep 23, 2021, 20:10 Chris Koknat @.***> wrote:

Thanks

One final question: I need to construct a regex that detects Julia function names For most languages, this include a-z A-Z 0-9 and _ For Julia, I'm adding . and $ and ! I realize that it supports a wide range of unicode, but that may be too complex for a regex. Are there any other important characters that I'm missing?

On Wed, Sep 22, 2021 at 7:30 PM amizeranschi @.***> wrote:

See:

https://stackoverflow.com/questions/45396685/what-does-an-exclamation-mark-mean-after-the-name-of-a-function

On Thu, Sep 23, 2021, 05:24 Chris Koknat @.***> wrote:

Thanks, this is very helpful

What does it mean when a function has '!' Base.push! is repeated in plots.jl:

function Base.push!(segments::Segments{T}, vs...) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

function Base.push!(segments::Segments{T}, vs::AVec) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs push!(segments.pts, convert(T, v)) end segments end

On Tue, Sep 21, 2021 at 9:29 PM amizeranschi @.***> wrote:

Here are a couple of examples from Plots.jl and CUDA.jl, respectively:

https://github.com/JuliaPlots/Plots.jl/blob/master/src/utils.jl https://github.com/JuliaGPU/CUDA.jl/blob/master/src/array.jl

I hope these will be helpful and thanks for looking into this.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub < https://github.com/koknat/callGraph/issues/3#issuecomment-924574038 , or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ABK7KKR2HHPKI2RWVBWGHGTUDFLS7ANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <https://github.com/koknat/callGraph/issues/3#issuecomment-925461991 , or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ACYGZNGNUC74FJISOJGPNJTUDKFWFANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-925463757, or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ABK7KKUMYSWGZOKMUH3OCVLUDKGNNANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-926000558, or unsubscribe < https://github.com/notifications/unsubscribe-auth/ACYGZNDW3IKTEZOSH6BB3STUDNNQDANCNFSM5ENKI6QQ

. Triage notifications on the go with GitHub Mobile for iOS < https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android < https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/koknat/callGraph/issues/3#issuecomment-926015195, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABK7KKQ2SZQJ6N6RI332TQTUDNP57ANCNFSM5ENKI6QQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.