Login | Register
My pages Projects Community openCollabNet

Discussions > The Developers' mailing list > [argouml-dev] Some observations on java reverse engineering

argouml
Discussion topic

Hide all messages in topic

All messages in topic

Re: [argouml-dev] Some observations on java reverse engineering

Author bobtarling
Full name Bob Tarling
Date 2014-12-18 13:50:35 PST
Message sorry, I accidentally sent that last email before finished.

I'll create an issue and attach a demo project.

We can carry on discussions from there.

Thanks

Bob


On 18 December 2014 at 21:44, Bob Tarling <bob dot tarling at gmail dot com> wrote:
>
> Hi Thomas
>
> Looks good from within the same package.
>
> Can this be adapted to create the dependencies across package?
>
> I can't currently see what is preventing this.
>
> Bob
>
> On 18 December 2014 at 20:37, Thomas Neustupny <thn-d at gmx dot de> wrote:
>>
>> Hi Bob, hi Tom,
>>
>> thanks for sharing the knowledge about these tools, there're for sure
>> worth a look when cyclic dependencies need to be analyzed.
>>
>> To answer your question, Bob: The parser will only create a dependency if
>> there is still none for the given client/supplier combination, or, if a
>> stereotype name is provided, if there is no such dependency with that
>> stereotype name. See the implementation of the private buildDependency(...)
>> method in the Modeller class.
>>
>> Regards,
>> Thomas
>>
>>
>> Gesendet: Donnerstag, 18. Dezember 2014 um 20:25 Uhr
>> Von: "Bob Tarling" <bob dot tarling at gmail dot com>
>> An: dev at argouml dot tigris dot org
>> Betreff: Re: [argouml-dev] Some observations on java reverse engineering
>>
>> Cool, thanks Tom.
>> IntelliJ may be the direction for us at work some time soon anyway, I'll
>> start of looking at classcycle for now though..
>> I'd still like to tackle this for Argo as well, I'll go take a look at
>> Thomas's work as soon as I can.
>>
>> Cheers
>>
>> Bob
>>
>>
>> On 18 December 2014 at 18:38, Tom Morris <tfmorris at gmail dot com> wrote:
>>
>> On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling <bob dot tarling at gmail dot com[
>> bob dot tarling at gmail dot com]> wrote:
>>
>> My end goal is actually to determine package dependencies. I have a
>> large application that I'm sure has cyclic dependencies between packages
>> and I'd like to demonstrate that problem to the team I work with before we
>> tackle how to resolve it and split the app to smaller jars.
>>
>> The tool I used to do this analysis for ArgoUML itself (although we never
>> tackled removing the package cycles) was Classycle:
>> http://classycle.sou​rceforge.net/[http:/​/classycle.sourcefor​ge.net/] It
>> is available as an Eclipse plugin as well as standalone tool. One nice
>> addition since the last time I used it is support for Dependency Definition
>> Files. This allows you to describe allowable dependencies (e.g. your
>> architectural layers) and it will check for violations.
>> http://classycle.sou​rceforge.net/ddf.htm​l[http://classycle.s​ourceforge.net/ddf.h​tml]
>> Looking at
>> http://argouml.tigri​s.org/source/browse/​argouml/trunk/tools/​classycle/[http://ar​gouml.tigris.org/sou​rce/browse/argouml/t​runk/tools/classycle​/]
>> it looks like it's been 7-8 years since I used it for ArgoUML.
>>
>> IntelliJ's dependency analysis looks pretty powerful too (although I
>> haven't used it):
>> https://www.jetbrain​s.com/idea/features/​dependency_analysis.​html[https://www.jet​brains.com/idea/feat​ures/dependency_anal​ysis.html]
>>
>> While adding dependencies to the Java reverse engineering may be useful
>> for other stuff, it's not how I'd recommend finding package cycles. A tool
>> designed for that purpose will do a better job.
>>
>> Tom
>>
>>
>>
>> --------------------​--------------------​--------------
>>
>> http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309300​0
>>
>> To unsubscribe from this discussion, e-mail: [
>> dev-unsubscribe@argo​uml.tigris.org].
>> To be allowed to post to the list contact the mailing list moderator,
>> email: [linus at tigris dot org]
>>
>
Attachments

Re: [argouml-dev] Some observations on java reverse engineering

Author bobtarling
Full name Bob Tarling
Date 2014-12-18 13:44:31 PST
Message Hi Thomas

Looks good from within the same package.

Can this be adapted to create the dependencies across package?

I can't currently see what is preventing this.

Bob

On 18 December 2014 at 20:37, Thomas Neustupny <thn-d at gmx dot de> wrote:
>
> Hi Bob, hi Tom,
>
> thanks for sharing the knowledge about these tools, there're for sure
> worth a look when cyclic dependencies need to be analyzed.
>
> To answer your question, Bob: The parser will only create a dependency if
> there is still none for the given client/supplier combination, or, if a
> stereotype name is provided, if there is no such dependency with that
> stereotype name. See the implementation of the private buildDependency(...)
> method in the Modeller class.
>
> Regards,
> Thomas
>
>
> Gesendet: Donnerstag, 18. Dezember 2014 um 20:25 Uhr
> Von: "Bob Tarling" <bob dot tarling at gmail dot com>
> An: dev at argouml dot tigris dot org
> Betreff: Re: [argouml-dev] Some observations on java reverse engineering
>
> Cool, thanks Tom.
> IntelliJ may be the direction for us at work some time soon anyway, I'll
> start of looking at classcycle for now though..
> I'd still like to tackle this for Argo as well, I'll go take a look at
> Thomas's work as soon as I can.
>
> Cheers
>
> Bob
>
>
> On 18 December 2014 at 18:38, Tom Morris <tfmorris at gmail dot com> wrote:
>
> On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling <bob dot tarling at gmail dot com[
> bob dot tarling at gmail dot com]> wrote:
>
> My end goal is actually to determine package dependencies. I have a large
> application that I'm sure has cyclic dependencies between packages and I'd
> like to demonstrate that problem to the team I work with before we tackle
> how to resolve it and split the app to smaller jars.
>
> The tool I used to do this analysis for ArgoUML itself (although we never
> tackled removing the package cycles) was Classycle:
> http://classycle.sou​rceforge.net/[http:/​/classycle.sourcefor​ge.net/] It
> is available as an Eclipse plugin as well as standalone tool. One nice
> addition since the last time I used it is support for Dependency Definition
> Files. This allows you to describe allowable dependencies (e.g. your
> architectural layers) and it will check for violations.
> http://classycle.sou​rceforge.net/ddf.htm​l[http://classycle.s​ourceforge.net/ddf.h​tml]
> Looking at
> http://argouml.tigri​s.org/source/browse/​argouml/trunk/tools/​classycle/[http://ar​gouml.tigris.org/sou​rce/browse/argouml/t​runk/tools/classycle​/]
> it looks like it's been 7-8 years since I used it for ArgoUML.
>
> IntelliJ's dependency analysis looks pretty powerful too (although I
> haven't used it):
> https://www.jetbrain​s.com/idea/features/​dependency_analysis.​html[https://www.jet​brains.com/idea/feat​ures/dependency_anal​ysis.html]
>
> While adding dependencies to the Java reverse engineering may be useful
> for other stuff, it's not how I'd recommend finding package cycles. A tool
> designed for that purpose will do a better job.
>
> Tom
>
>
>
> --------------------​--------------------​--------------
>
> http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309300​0
>
> To unsubscribe from this discussion, e-mail: [
> dev-unsubscribe@argo​uml.tigris.org].
> To be allowed to post to the list contact the mailing list moderator,
> email: [linus at tigris dot org]
>
Attachments

Re: [argouml-dev] Some observations on java reverse engineering

Author thn
Full name Thomas Neustupny
Date 2014-12-18 12:37:48 PST
Message Hi Bob, hi Tom,

thanks for sharing the knowledge about these tools, there're for sure worth a look when cyclic dependencies need to be analyzed.

To answer your question, Bob: The parser will only create a dependency if there is still none for the given client/supplier combination, or, if a stereotype name is provided, if there is no such dependency with that stereotype name. See the implementation of the private buildDependency(...) method in the Modeller class.

Regards,
Thomas 
 

Gesendet: Donnerstag, 18. Dezember 2014 um 20:25 Uhr
Von: "Bob Tarling" <bob dot tarling at gmail dot com>
An: dev at argouml dot tigris dot org
Betreff: Re: [argouml-dev] Some observations on java reverse engineering

Cool, thanks Tom.
 IntelliJ may be the direction for us at work some time soon anyway, I'll start of looking at classcycle for now though..
 I'd still like to tackle this for Argo as well, I'll go take a look at Thomas's work as soon as I can.
 
Cheers
 
Bob
 
 
On 18 December 2014 at 18:38, Tom Morris <tfmorris at gmail dot com> wrote:

On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling <bob.tarling@gmai​l.com[bob.tarling@gm​ail.com]> wrote:

 My end goal is actually to determine package dependencies. I have a large application that I'm sure has cyclic dependencies between packages and I'd like to demonstrate that problem to the team I work with before we tackle how to resolve it and split the app to smaller jars.
 
The tool I used to do this analysis for ArgoUML itself (although we never tackled removing the package cycles) was Classycle: http://classycle.sou​rceforge.net/[http:/​/classycle.sourcefor​ge.net/] It is available as an Eclipse plugin as well as standalone tool.  One nice addition since the last time I used it is support for Dependency Definition Files.  This allows you to describe allowable dependencies (e.g. your architectural layers) and it will check for violations. http://classycle.sou​rceforge.net/ddf.htm​l[http://classycle.s​ourceforge.net/ddf.h​tml]  Looking at http://argouml.tigri​s.org/source/browse/​argouml/trunk/tools/​classycle/[http://ar​gouml.tigris.org/sou​rce/browse/argouml/t​runk/tools/classycle​/] it looks like it's been 7-8 years since I used it for ArgoUML.
 
IntelliJ's dependency analysis looks pretty powerful too (although I haven't used it): https://www.jetbrain​s.com/idea/features/​dependency_analysis.​html[https://www.jet​brains.com/idea/feat​ures/dependency_anal​ysis.html]
 
While adding dependencies to the Java reverse engineering may be useful for other stuff, it's not how I'd recommend finding package cycles.  A tool designed for that purpose will do a better job.
 
Tom
 
 

Re: [argouml-dev] Some observations on java reverse engineering

Author bobtarling
Full name Bob Tarling
Date 2014-12-18 11:25:32 PST
Message Cool, thanks Tom.

IntelliJ may be the direction for us at work some time soon anyway, I'll
start of looking at classcycle for now though..

I'd still like to tackle this for Argo as well, I'll go take a look at
Thomas's work as soon as I can.

Cheers

Bob


On 18 December 2014 at 18:38, Tom Morris <tfmorris at gmail dot com> wrote:
>
> On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling <bob dot tarling at gmail dot com>
> wrote:
>>
>>
>> My end goal is actually to determine package dependencies. I have a large
>> application that I'm sure has cyclic dependencies between packages and I'd
>> like to demonstrate that problem to the team I work with before we tackle
>> how to resolve it and split the app to smaller jars.
>>
>
> The tool I used to do this analysis for ArgoUML itself (although we never
> tackled removing the package cycles) was Classycle:
> http://classycle.sou​rceforge.net/ It is available as an Eclipse plugin as
> well as standalone tool. One nice addition since the last time I used it
> is support for Dependency Definition Files. This allows you to describe
> allowable dependencies (e.g. your architectural layers) and it will check
> for violations. http://classycle.sou​rceforge.net/ddf.htm​l Looking at
> http://argouml.tigri​s.org/source/browse/​argouml/trunk/tools/​classycle/ it
> looks like it's been 7-8 years since I used it for ArgoUML.
>
> IntelliJ's dependency analysis looks pretty powerful too (although I
> haven't used it):
> https://www.jetbrain​s.com/idea/features/​dependency_analysis.​html
>
> While adding dependencies to the Java reverse engineering may be useful
> for other stuff, it's not how I'd recommend finding package cycles. A tool
> designed for that purpose will do a better job.
>
> Tom
>
>
>
Attachments

Re: [argouml-dev] Some observations on java reverse engineering

Author tfmorris
Full name Tom Morris
Date 2014-12-18 10:38:19 PST
Message On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling <bob dot tarling at gmail dot com> wrote:
>
>
> My end goal is actually to determine package dependencies. I have a large
> application that I'm sure has cyclic dependencies between packages and I'd
> like to demonstrate that problem to the team I work with before we tackle
> how to resolve it and split the app to smaller jars.
>

The tool I used to do this analysis for ArgoUML itself (although we never
tackled removing the package cycles) was Classycle:
http://classycle.sou​rceforge.net/ It is available as an Eclipse plugin as
well as standalone tool. One nice addition since the last time I used it
is support for Dependency Definition Files. This allows you to describe
allowable dependencies (e.g. your architectural layers) and it will check
for violations. http://classycle.sou​rceforge.net/ddf.htm​l Looking at
http://argouml.tigri​s.org/source/browse/​argouml/trunk/tools/​classycle/ it
looks like it's been 7-8 years since I used it for ArgoUML.

IntelliJ's dependency analysis looks pretty powerful too (although I
haven't used it):
https://www.jetbrain​s.com/idea/features/​dependency_analysis.​html

While adding dependencies to the Java reverse engineering may be useful for
other stuff, it's not how I'd recommend finding package cycles. A tool
designed for that purpose will do a better job.

Tom
Attachments

Re: [argouml-dev] Some observations on java reverse engineering

Author bobtarling
Full name Bob Tarling
Date 2014-12-18 02:29:36 PST
Message Brilliant, thanks Thomas I'll take a look as soon as I can.

My end goal is actually to determine package dependencies. I have a large
application that I'm sure has cyclic dependencies between packages and I'd
like to demonstrate that problem to the team I work with before we tackle
how to resolve it and split the app to smaller jars.

With class dependencies in place I should be able to use that info to build
the package dependencies. I'll do that work and provide it on top of your
own.

Going back to my previous comments.... Personally I'd like to see the
creation of Components as being a checkbox option, for me that is a lot of
extra elemernts that I don't see as useful in my model

Others may view my new requirements similarly, they may prefer to have
creation of dependencies turned off so this could also be a checkbox.

A question - do you always create a dependency even if some other
relationship already exists such as an association? Again for me personally
I would only consider adding a dependency of no other relationship exists -
this could be an option if others don't share my view.

Cheers

Bob

On 17 December 2014 at 22:14, Thomas Neustupny <thn-d at gmx dot de> wrote:
>
> Hi Bob,
>
> here is a first attempt. First, a method call has to be added in the
> parser java.g, here:
>
> localVariableDeclaration
> : variableModifiers t=type
> {
> // simple dependency algorithm: if t is found in the model,
> // then build a dependency, otherwise ignore
> if (parserMode == MODE_IMPORT_PASS2) {
> getModeller().addCla​ssifierDependency(t)​;
> }
> }
> variableDeclarators["", (short)0, null]
> ;
>
> Then, the method in Modeller.java has to be added, here is a first working
> version:
>
> /**
> * Called from the parser to add a dependency to a classifier.
> *
> * @param name The name of the classifier candidate.
> */
> void addClassifierDependency(String name) {
> String classifierName = stripVarargAndGenerics(name);
> Object clientObj = parseState.getClassifier();
> if (clientObj == null) {
> return;
> }
> Object supplierObj = null;
>
> // first try: lookup classifierName in same namespace
> Object ns = Model.getFacade().ge​tNamespace(clientObj​);
> if (ns != null) {
> supplierObj = Model.getFacade().lookupIn(ns, classifierName);
> }
>
> // second try: lookup in imports
> if (supplierObj == null) {
> String packageName = getPackageName(name);
> // ...
> }
>
> // third try: resolve fully qualified classifier (xxx.yyy.Zzz)
> String packageName = getPackageName(name);
> if (supplierObj == null && packageName.length() > 0) {
> classifierName = this.getClassifierName(name);
> // ...
> }
>
> // finally build the dependency
> if (supplierObj != null) {
> buildDependency(supplierObj, clientObj, null);
> }
> }
>
> I've committed it to the Java module code, feel free to test&experiment.
> Your example already works with that provided both classes are in the same
> package.
>
> Regards,
> Thomas
>
>
> Gesendet: Montag, 15. Dezember 2014 um 21:32 Uhr
> Von: "Thomas Neustupny" <thn-d at gmx dot de>
> An: dev at argouml dot tigris dot org
> Betreff: Aw: [argouml-dev] Some observations on java reverse engineering
> [Sorry for accidently sending in hmtl format, I'm resending it in plain
> text format]
>
>
> Hi Bob,
>
> this is no malfunction, just a missing feature. The method bodies are
> completely parsed, but the information in there is not used yet. I want
> this feature, too, and can assist. I&#39;ve just set up my dev environment
> (eclipse Luna, Java 1.8, it works well so far).
>
> The component is not generated for each class, but for each compilation
> unit (.java file), because a file can host more than one class. Also, the
> imports do not belong to the class, but to the component instance for
> obvious reasons. It&#39;s a great feature (not by me, I forgot who deserves
> the honor for that!).
>
> I suggest to identify the lines in java.g, where the type identifier for
> the associated class/interface can be found and discuss how to process
> them. The parser has two passes, so we could search the already identified
> types from the first pass during the second phase.
>
> Regards,
> Thomas
>
>
> 14 um 18:07 Uhr<br/>
> <b>Von:</b​>&nbsp;&qu​ot;Bob Tarling&quot; &lt;bob dot tarling at gmail dot com
> &gt;<br/>
> <b>An:</b​>&nbsp;dev@argo​uml.tigris.org<br​/>
> <b>Betreff:​</b>&nbsp;[ar​gouml-dev] Some observations on java reverse
> engineering</div>
>
> <div name="quoted-content">
> <div>
> <div>I&#39;m trying to generate some diagrams from an existing code base
> at work and I see some issues with the model generated.<br/>
> &nbsp;</div>
> A simple example is this.
>
> <div><br/>
> public class UseTestUtil {<br/>
> <br/>
> &nbsp;&nbsp;&nbsp; private void test() {<br/>
> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; TestUtil tu = new TestUtil();<br/>
> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tu.test();<br/>
> &nbsp;&nbsp;&nbsp; }<br/>
> }<br/>
> &nbsp;</div>
>
> <div>I&#39;d expect to see a dependency relationship from UseTestUtil to
> TestUtil but nothing is generated. Is there some complication with our
> parser not being able to manage this or is this just an outstanding
> enhancement.<br/>
> &nbsp;</div>
>
> <div>I also notice a component eing generated for every class. WHy is
> this?<br/>
> &nbsp;</div>
>
> <div>Regards<br/>
> &nbsp;</div>
>
> <div>Bob<br/>
> &nbsp;</div>
>
> <div><br/>
> &nbsp;</div>
> </div>
> </div>
> </div>
> </div>
> </div></div​></body>​</html>
>
> --------------------​--------------------​--------------
>
> http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309275​2
>
> To unsubscribe from this discussion, e-mail: [
> dev-unsubscribe@argo​uml.tigris.org].
> To be allowed to post to the list contact the mailing list moderator,
> email: [linus at tigris dot org]
>
> --------------------​--------------------​--------------
>
> http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309275​4[http://argouml.tig​ris.org/ds/viewMessa​ge.do?dsForumId=450​&dsMessageId=3092​754]
>
> To unsubscribe from this discussion, e-mail: [
> dev-unsubscribe@argo​uml.tigris.org].
> To be allowed to post to the list contact the mailing list moderator,
> email: [linus at tigris dot org]
>
> --------------------​--------------------​--------------
>
> http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309293​3
>
> To unsubscribe from this discussion, e-mail: [
> dev-unsubscribe@argo​uml.tigris.org].
> To be allowed to post to the list contact the mailing list moderator,
> email: [linus at tigris dot org]
>
Attachments

Aw: [argouml-dev] Some observations on java reverse engineering

Author thn
Full name Thomas Neustupny
Date 2014-12-17 14:14:25 PST
Message Hi Bob,

here is a first attempt. First, a method call has to be added in the parser java.g, here:

localVariableDeclaration
    : variableModifiers t=type
        {
            // simple dependency algorithm: if t is found in the model,
            // then build a dependency, otherwise ignore
            if (parserMode == MODE_IMPORT_PASS2) {
                getModeller().addCla​ssifierDependency(t)​;
            }
        }
        variableDeclarators["", (short)0, null]
    ;

Then, the method in Modeller.java has to be added, here is a first working version:

    /**
     * Called from the parser to add a dependency to a classifier.
     *
     * @param name The name of the classifier candidate.
     */
    void addClassifierDependency(String name) {
        String classifierName = stripVarargAndGenerics(name);
        Object clientObj = parseState.getClassifier();
        if (clientObj == null) {
            return;
        }
        Object supplierObj = null;
        
        // first try: lookup classifierName in same namespace
        Object ns = Model.getFacade().ge​tNamespace(clientObj​);
        if (ns != null) {
            supplierObj = Model.getFacade().lookupIn(ns, classifierName);
        }

        // second try: lookup in imports
        if (supplierObj == null) {
            String packageName = getPackageName(name);
            // ...
        }
        
        // third try: resolve fully qualified classifier (xxx.yyy.Zzz)
        String packageName = getPackageName(name);
        if (supplierObj == null && packageName.length() > 0) {
            classifierName = this.getClassifierName(name);
            // ...
        }
        
        // finally build the dependency
        if (supplierObj != null) {
            buildDependency(supplierObj, clientObj, null);
        }
    }

I've committed it to the Java module code, feel free to test&experiment. Your example already works with that provided both classes are in the same package.

Regards, 
Thomas 


Gesendet: Montag, 15. Dezember 2014 um 21:32 Uhr
Von: "Thomas Neustupny" <thn-d at gmx dot de>
An: dev at argouml dot tigris dot org
Betreff: Aw: [argouml-dev] Some observations on java reverse engineering
[Sorry for accidently sending in hmtl format, I'm resending it in plain text format]
 

Hi Bob,

this is no malfunction, just a missing feature. The method bodies are completely parsed, but the information in there is not used yet. I want this feature, too, and can assist. I&#39;ve just set up my dev environment (eclipse Luna, Java 1.8, it works well so far).

The component is not generated for each class, but for each compilation unit (.java file), because a file can host more than one class. Also, the imports do not belong to the class, but to the component instance for obvious reasons. It&#39;s a great feature (not by me, I forgot who deserves the honor for that!).

I suggest to identify the lines in java.g, where the type identifier for the associated class/interface can be found and discuss how to process them. The parser has two passes, so we could search the already identified types from the first pass during the second phase.

Regards,
Thomas


14 um 18:07 Uhr<br/>
<b>Von:</b​>&nbsp;&qu​ot;Bob Tarling&quot; &lt;bob.tarling@​gmail.com&gt;​<br/>
<b>An:</b​>&nbsp;dev@argo​uml.tigris.org<br​/>
<b>Betreff:​</b>&nbsp;[ar​gouml-dev] Some observations on java reverse engineering</div>

<div name="quoted-content">
<div>
<div>I&#39;m trying to generate some diagrams from an existing code base at work and I see some issues with the model generated.<br/>
&nbsp;</div>
A simple example is this.

<div><br/>
public class UseTestUtil {<br/>
<br/>
&nbsp;&nbsp;&nbsp; private void test() {<br/>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; TestUtil tu = new TestUtil();<br/>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tu.test();<br/>
&nbsp;&nbsp;&nbsp; }<br/>
}<br/>
&nbsp;</div>

<div>I&#39;d expect to see a dependency relationship from UseTestUtil to TestUtil but nothing is generated. Is there some complication with our parser not being able to manage this or is this just an outstanding enhancement.<br/>
&nbsp;</div>

<div>I also notice a component eing generated for every class. WHy is this?<br/>
&nbsp;</div>

<div>Regards<br/>
&nbsp;</div>

<div>Bob<br/>
&nbsp;</div>

<div><br/>
&nbsp;</div>
</div>
</div>
</div>
</div>
</div></div​></body>​</html>

--------------------​--------------------​--------------
http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309275​2

To unsubscribe from this discussion, e-mail: [dev-unsubscribe@arg​ouml.tigris.org].
To be allowed to post to the list contact the mailing list moderator, email: [linus at tigris dot org]

--------------------​--------------------​--------------
http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309275​4[http://argouml.tig​ris.org/ds/viewMessa​ge.do?dsForumId=450​&dsMessageId=3092​754]

To unsubscribe from this discussion, e-mail: [dev-unsubscribe@arg​ouml.tigris.org].
To be allowed to post to the list contact the mailing list moderator, email: [linus at tigris dot org]

Aw: [argouml-dev] Some observations on java reverse engineering

Author thn
Full name Thomas Neustupny
Date 2014-12-15 12:32:32 PST
Message [Sorry for accidently sending in hmtl format, I'm resending it in plain text format]
 

Hi Bob,

this is no malfunction, just a missing feature. The method bodies are completely parsed, but the information in there is not used yet. I want this feature, too, and can assist. I&#39;ve just set up my dev environment (eclipse Luna, Java 1.8, it works well so far).

The component is not generated for each class, but for each compilation unit (.java file), because a file can host more than one class. Also, the imports do not belong to the class, but to the component instance for obvious reasons. It&#39;s a great feature (not by me, I forgot who deserves the honor for that!).

I suggest to identify the lines in java.g, where the type identifier for the associated class/interface can be found and discuss how to process them. The parser has two passes, so we could search the already identified types from the first pass during the second phase.

Regards,
Thomas


14 um 18:07 Uhr<br/>
<b>Von:</b​>&nbsp;&qu​ot;Bob Tarling&quot; &lt;bob.tarling@​gmail.com&gt;​<br/>
<b>An:</b​>&nbsp;dev@argo​uml.tigris.org<br​/>
<b>Betreff:​</b>&nbsp;[ar​gouml-dev] Some observations on java reverse engineering</div>

<div name="quoted-content">
<div>
<div>I&#39;m trying to generate some diagrams from an existing code base at work and I see some issues with the model generated.<br/>
&nbsp;</div>
A simple example is this.

<div><br/>
public class UseTestUtil {<br/>
<br/>
&nbsp;&nbsp;&nbsp; private void test() {<br/>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; TestUtil tu = new TestUtil();<br/>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tu.test();<br/>
&nbsp;&nbsp;&nbsp; }<br/>
}<br/>
&nbsp;</div>

<div>I&#39;d expect to see a dependency relationship from UseTestUtil to TestUtil but nothing is generated. Is there some complication with our parser not being able to manage this or is this just an outstanding enhancement.<br/>
&nbsp;</div>

<div>I also notice a component eing generated for every class. WHy is this?<br/>
&nbsp;</div>

<div>Regards<br/>
&nbsp;</div>

<div>Bob<br/>
&nbsp;</div>

<div><br/>
&nbsp;</div>
</div>
</div>
</div>
</div>
</div></div​></body>​</html>

--------------------​--------------------​--------------
http://argouml.tigri​s.org/ds/viewMessage​.do?dsForumId=450​&dsMessageId=309275​2

To unsubscribe from this discussion, e-mail: [dev-unsubscribe@arg​ouml.tigris.org].
To be allowed to post to the list contact the mailing list moderator, email: [linus at tigris dot org]

Aw: [argouml-dev] Some observations on java reverse engineering

Author thn
Full name Thomas Neustupny
Date 2014-12-15 11:53:08 PST
Message <html><head​></head>​<body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>Hi Bob,</div>

<div>&nbsp​;</div>

<div>this is no malfunction, just a missing feature. The method bodies are completely parsed, but the information in there is not used yet. I want this feature, too, and can assist. I&#39;ve just set up my dev environment (eclipse Luna, Java 1.8, it works well so far).</div>

<div>&nbsp​;</div>

<div>The component is not generated for each class, but for each compilation unit (.java file), because a file can host more than one class. Also, the imports do not belong to the class, but to the component instance for obvious reasons. It&#39;s a great feature (not by me, I forgot who deserves the honor for that!).</div>

<div>&nbsp​;</div>

<div>I suggest to identify the lines in java.g, where the type identifier for the associated class/interface can be found and discuss how to process them. The parser has two passes, so we could search the already identified types from the first pass during the second phase.</div>

<div>&nbsp​;</div>

<div>Regards,</div>

<div>Thomas</div>

<div>&nbsp;
<div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin:0 0 10px 0;"><b>Gese​ndet:</b>&​nbsp;Sonntag, 14. Dezember 2014 um 18:07 Uhr<br/>
<b>Von:</b​>&nbsp;&qu​ot;Bob Tarling&quot; &lt;bob.tarling@​gmail.com&gt;​<br/>
<b>An:</b​>&nbsp;dev@argo​uml.tigris.org<br​/>
<b>Betreff:​</b>&nbsp;[ar​gouml-dev] Some observations on java reverse engineering</div>

<div name="quoted-content">
<div>
<div>I&#39;m trying to generate some diagrams from an existing code base at work and I see some issues with the model generated.<br/>
&nbsp;</div>
A simple example is this.

<div><br/>
public class UseTestUtil {<br/>
<br/>
&nbsp;&nbsp;&nbsp; private void test() {<br/>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; TestUtil tu = new TestUtil();<br/>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tu.test();<br/>
&nbsp;&nbsp;&nbsp; }<br/>
}<br/>
&nbsp;</div>

<div>I&#39;d expect to see a dependency relationship from UseTestUtil to TestUtil but nothing is generated. Is there some complication with our parser not being able to manage this or is this just an outstanding enhancement.<br/>
&nbsp;</div>

<div>I also notice a component eing generated for every class. WHy is this?<br/>
&nbsp;</div>

<div>Regards<br/>
&nbsp;</div>

<div>Bob<br/>
&nbsp;</div>

<div><br/>
&nbsp;</div>
</div>
</div>
</div>
</div>
</div></div​></body>​</html>

[argouml-dev] Some observations on java reverse engineering

Author bobtarling
Full name Bob Tarling
Date 2014-12-14 09:07:25 PST
Message I'm trying to generate some diagrams from an existing code base at work and
I see some issues with the model generated.

A simple example is this.

public class UseTestUtil {

    private void test() {
        TestUtil tu = new TestUtil();
        tu.test();
    }
}

I'd expect to see a dependency relationship from UseTestUtil to TestUtil
but nothing is generated. Is there some complication with our parser not
being able to manage this or is this just an outstanding enhancement.

I also notice a component eing generated for every class. WHy is this?

Regards

Bob
Attachments
Messages per page: