Fractal Dimension
I learned the general idea of fractal dimension from this talk: https://www.youtube.com/watch?v=bSfe5M_zG2s
I think it's a cool idea for software complexity so I want to implement it in Lizard. But lack of idea on how to it. So your ideas are welcome! :-)
Here are some of my ideas and thinking:
[idea1] The speaker of the talk gave an example of applying FD on stack trace, which makes a lot of sense. Because a stack trace shows exactly the "path" from point A to point B. And using memory offset for each method in the sack trace also makes a lot of sense. The problem is I can only get stack trace in runtime. How to apply the idea in static analysing?
[idea2] A naive idea is using folder count < file count < method count < line count < token count to get a FD number. But I couldn't find any logic in this, nor can I imagine how the FD number can be useful. Identify similar code bases?
[idea3] Apply FD for revision history. I think this might be more promising... But it might be more about programmer behaviour than code complexity...
[idea4] thanks @penguish Get FD from the OO network. See paper http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.226.386&rep=rep1&type=pdf
Your idea?
Hi, can you access this paper, which looks relevant....?
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.226.386&rep=rep1&type=pdf
cheers
shaun
Shaun Roe [email protected]:[email protected] AIM, iChat: shuanroe Skype: shaunroe 微信:ShaunRoe
On 20 Jul 2016, at 05:27, Terry Yin <[email protected]mailto:[email protected]> wrote:
I learned the general idea of fractal dimension from this talk: https://www.youtube.com/watch?v=bSfe5M_zG2s
I think it's a cool idea for software complexity so I want to implement it in Lizard. But lack of idea on how to it. So your ideas are welcome! :-)
Here are some of my ideas and thinking:
[idea1] The speaker of the talk gave an example of applying FD on stack trace, which makes a lot of sense. Because a stack trace shows exactly the "path" from point A to point B. And using memory offset for each method in the sack trace also makes a lot of sense. The problem is I can only get stack trace in runtime. How to apply the idea in static analysing?
[idea2] A naive idea is using folder count < file count < method count < line count < token count to get a FD number. But I couldn't find any logic in this, nor can I imagine how the FD number can be useful. Identify similar code bases?
[idea3] Apply FD for revision history. I think this might be more promising... But it might be more about programmer behaviour than code complexity...
Your idea?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/terryyin/lizard/issues/138, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AK1kD66jip-mmHbWGBFyQknSpEtS2eaHks5qXZWngaJpZM4JQY1F.
Shaun,
Thanks for the paper, I can access it. It’s very important input.
I thought about the OO network idea too. But Lizard lacks of the ability of identifying the dependency now (I’m working on it). From the very beginning of Lizard, I decided it will ignore the header files and imports. So Lizard doesn’t know which method call is from where.
I’m not surprised that in the paper most of the studied projects are in Java. Because Java is such a verbose language that even a simple tool can understand it to some extend without much effort. For dynamic languages like Python or Ruby, finding out the dependency is much harder, or even impossible.
I guess this might be the direction I eventually choose, by approximating the dependency. But let me spend more time on collecting more ideas.
br, Terry
On 20 Jul 2016, at 2:14 PM, penguish [email protected] wrote:
Hi, can you access this paper, which looks relevant....?
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.226.386&rep=rep1&type=pdf
cheers
shaun
Shaun Roe [email protected]:[email protected] AIM, iChat: shuanroe Skype: shaunroe 微信:ShaunRoe
On 20 Jul 2016, at 05:27, Terry Yin <[email protected]mailto:[email protected]> wrote:
I learned the general idea of fractal dimension from this talk: https://www.youtube.com/watch?v=bSfe5M_zG2s
I think it's a cool idea for software complexity so I want to implement it in Lizard. But lack of idea on how to it. So your ideas are welcome! :-)
Here are some of my ideas and thinking:
[idea1] The speaker of the talk gave an example of applying FD on stack trace, which makes a lot of sense. Because a stack trace shows exactly the "path" from point A to point B. And using memory offset for each method in the sack trace also makes a lot of sense. The problem is I can only get stack trace in runtime. How to apply the idea in static analysing?
[idea2] A naive idea is using folder count < file count < method count < line count < token count to get a FD number. But I couldn't find any logic in this, nor can I imagine how the FD number can be useful. Identify similar code bases?
[idea3] Apply FD for revision history. I think this might be more promising... But it might be more about programmer behaviour than code complexity...
Your idea?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/terryyin/lizard/issues/138, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AK1kD66jip-mmHbWGBFyQknSpEtS2eaHks5qXZWngaJpZM4JQY1F.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/terryyin/lizard/issues/138#issuecomment-233847905, or mute the thread https://github.com/notifications/unsubscribe-auth/AAwJYoRgdiPadEiVatXoNKDFa7DB_ZGPks5qXbyxgaJpZM4JQY1F.
Hi, good. BTW, I have been looking at the collection of metric called 'CK' metrics: http://www.aivosto.com/project/help/pm-oo-ck.html
but in particular it seems that the most important ones are NOC , RFC (Number Of Children, Response For Class) http://www.lnse.org/vol4/222-SE020.pdf
an overall survey appears here: http://www.squale.org/quality-models-site/research-deliverables/WP1.1_Software-metrics-for-Java-and-Cpp-practices_v1.pdf
cheers
shaun
ps You might like to know we used your Lizard tool in a recent 'hackathon' on our reconstruction code; the most egregious example was a single method of CC=817 which was finally reduced to 2.
Shaun Roe [email protected]:[email protected] AIM, iChat: shuanroe Skype: shaunroe 微信:ShaunRoe
On 20 Jul 2016, at 09:39, Terry Yin <[email protected]mailto:[email protected]> wrote:
Shaun,
Thanks for the paper, I can access it. It’s very important input.
I thought about the OO network idea too. But Lizard lacks of the ability of identifying the dependency now (I’m working on it). From the very beginning of Lizard, I decided it will ignore the header files and imports. So Lizard doesn’t know which method call is from where.
I’m not surprised that in the paper most of the studied projects are in Java. Because Java is such a verbose language that even a simple tool can understand it to some extend without much effort. For dynamic languages like Python or Ruby, finding out the dependency is much harder, or even impossible.
I guess this might be the direction I eventually choose, by approximating the dependency. But let me spend more time on collecting more ideas.
br, Terry
On 20 Jul 2016, at 2:14 PM, penguish <[email protected]mailto:[email protected]> wrote:
Hi, can you access this paper, which looks relevant....?
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.226.386&rep=rep1&type=pdf
cheers
shaun
Shaun Roe [email protected]:[email protected]:[email protected] AIM, iChat: shuanroe Skype: shaunroe 微信:ShaunRoe
On 20 Jul 2016, at 05:27, Terry Yin <[email protected]mailto:[email protected]mailto:[email protected]> wrote:
I learned the general idea of fractal dimension from this talk: https://www.youtube.com/watch?v=bSfe5M_zG2s
I think it's a cool idea for software complexity so I want to implement it in Lizard. But lack of idea on how to it. So your ideas are welcome! :-)
Here are some of my ideas and thinking:
[idea1] The speaker of the talk gave an example of applying FD on stack trace, which makes a lot of sense. Because a stack trace shows exactly the "path" from point A to point B. And using memory offset for each method in the sack trace also makes a lot of sense. The problem is I can only get stack trace in runtime. How to apply the idea in static analysing?
[idea2] A naive idea is using folder count < file count < method count < line count < token count to get a FD number. But I couldn't find any logic in this, nor can I imagine how the FD number can be useful. Identify similar code bases?
[idea3] Apply FD for revision history. I think this might be more promising... But it might be more about programmer behaviour than code complexity...
Your idea?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/terryyin/lizard/issues/138, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AK1kD66jip-mmHbWGBFyQknSpEtS2eaHks5qXZWngaJpZM4JQY1F.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/terryyin/lizard/issues/138#issuecomment-233847905, or mute the thread https://github.com/notifications/unsubscribe-auth/AAwJYoRgdiPadEiVatXoNKDFa7DB_ZGPks5qXbyxgaJpZM4JQY1F.
— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/terryyin/lizard/issues/138#issuecomment-233867209, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AK1kD_RviuIT8Qz5MnrgZNd4fDi70Va1ks5qXdCwgaJpZM4JQY1F.
thanks for the more inputs. I’m proud of what you did with Lizard:-)
Yeah, most of these OO analysing methods are pointing to one direction: the tool understands the OO structure. It’s a realistic goal for Java and C++ (without too much macro).
On 20 Jul 2016, at 3:50 PM, penguish [email protected] wrote:
Hi, good. BTW, I have been looking at the collection of metric called 'CK' metrics: http://www.aivosto.com/project/help/pm-oo-ck.html
but in particular it seems that the most important ones are NOC , RFC (Number Of Children, Response For Class) http://www.lnse.org/vol4/222-SE020.pdf
an overall survey appears here: http://www.squale.org/quality-models-site/research-deliverables/WP1.1_Software-metrics-for-Java-and-Cpp-practices_v1.pdf
cheers
shaun
ps You might like to know we used your Lizard tool in a recent 'hackathon' on our reconstruction code; the most egregious example was a single method of CC=817 which was finally reduced to 2.
Shaun Roe [email protected]:[email protected] AIM, iChat: shuanroe Skype: shaunroe 微信:ShaunRoe
On 20 Jul 2016, at 09:39, Terry Yin <[email protected]mailto:[email protected]> wrote:
Shaun,
Thanks for the paper, I can access it. It’s very important input.
I thought about the OO network idea too. But Lizard lacks of the ability of identifying the dependency now (I’m working on it). From the very beginning of Lizard, I decided it will ignore the header files and imports. So Lizard doesn’t know which method call is from where.
I’m not surprised that in the paper most of the studied projects are in Java. Because Java is such a verbose language that even a simple tool can understand it to some extend without much effort. For dynamic languages like Python or Ruby, finding out the dependency is much harder, or even impossible.
I guess this might be the direction I eventually choose, by approximating the dependency. But let me spend more time on collecting more ideas.
br, Terry
On 20 Jul 2016, at 2:14 PM, penguish <[email protected]mailto:[email protected]> wrote:
Hi, can you access this paper, which looks relevant....?
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.226.386&rep=rep1&type=pdf
cheers
shaun
Shaun Roe [email protected]:[email protected]:[email protected] AIM, iChat: shuanroe Skype: shaunroe 微信:ShaunRoe
On 20 Jul 2016, at 05:27, Terry Yin <[email protected]mailto:[email protected]mailto:[email protected]> wrote:
I learned the general idea of fractal dimension from this talk: https://www.youtube.com/watch?v=bSfe5M_zG2s
I think it's a cool idea for software complexity so I want to implement it in Lizard. But lack of idea on how to it. So your ideas are welcome! :-)
Here are some of my ideas and thinking:
[idea1] The speaker of the talk gave an example of applying FD on stack trace, which makes a lot of sense. Because a stack trace shows exactly the "path" from point A to point B. And using memory offset for each method in the sack trace also makes a lot of sense. The problem is I can only get stack trace in runtime. How to apply the idea in static analysing?
[idea2] A naive idea is using folder count < file count < method count < line count < token count to get a FD number. But I couldn't find any logic in this, nor can I imagine how the FD number can be useful. Identify similar code bases?
[idea3] Apply FD for revision history. I think this might be more promising... But it might be more about programmer behaviour than code complexity...
Your idea?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/terryyin/lizard/issues/138, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AK1kD66jip-mmHbWGBFyQknSpEtS2eaHks5qXZWngaJpZM4JQY1F.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/terryyin/lizard/issues/138#issuecomment-233847905, or mute the thread https://github.com/notifications/unsubscribe-auth/AAwJYoRgdiPadEiVatXoNKDFa7DB_ZGPks5qXbyxgaJpZM4JQY1F.
— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/terryyin/lizard/issues/138#issuecomment-233867209, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AK1kD_RviuIT8Qz5MnrgZNd4fDi70Va1ks5qXdCwgaJpZM4JQY1F.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/terryyin/lizard/issues/138#issuecomment-233871218, or mute the thread https://github.com/notifications/unsubscribe-auth/AAwJYsAl8T1C0utadfFEo6jV7Ef0YuxNks5qXdMygaJpZM4JQY1F.