demetercop-info Mailing List for Demeter Cop
Brought to you by:
jeffpalm
You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(4) |
Oct
(2) |
Nov
|
Dec
|
|---|
|
From: Jeffrey P. <jd...@cs...> - 2002-10-15 00:42:40
|
They aren't needed... I was going to use some of them, but all the source is available, so I took what I needed. I'll fix the plugin.xml file, but, is it currently giving you problems? Thanks. Jeff Malcolm Davis wrote: > Sorry to bother you guys. I was looking at the plugin.xml > file for demetercop. demetercop seems to need > bloat-1.0.jar, grappa1_2.jar & BCEL.jar. > > Does demetercop need these libs to work correctly? If libs > are required, can you tell me where I can download them? Do > you have plans to include the libs in the download? > > Thanks for you help, > Malcolm > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Demetercop-info mailing list > Dem...@li... > https://lists.sourceforge.net/lists/listinfo/demetercop-info -- Jeffrey Palm --> http://jeffpalm.com |
|
From: Malcolm D. <ma...@nu...> - 2002-10-15 00:39:36
|
Sorry to bother you guys. I was looking at the plugin.xml file for demetercop. demetercop seems to need bloat-1.0.jar, grappa1_2.jar & BCEL.jar. Does demetercop need these libs to work correctly? If libs are required, can you tell me where I can download them? Do you have plans to include the libs in the download? Thanks for you help, Malcolm |
|
From: <li...@cc...> - 2002-09-25 15:11:47
|
Hi Jeff: my undergraduates do manually what you do automatically. What happens if the traversal methods are not written using a systematic naming convention? Can you handle that case too? -- Karl Help with hw 1: http://www.ccs.neu.edu/home/lieber/com1205/f02/hw/1/ Execute the Unix command fgrep "_trv(" *.java in the graph/gen subdirectory. We get: Adj.java: void allInh_Cd_graph_trv(CountingVisitor c) { Adj.java: vertex.allInh_Cd_graph_trv(c); Adj.java: ns.allInh_Cd_graph_trv(c); Adj_list.java: void allInh_Cd_graph_trv(CountingVisitor c) { } Alternat.java: void allInh_Cd_graph_trv(CountingVisitor c) { Alternat.java: first.allInh_Cd_graph_trv(c); Alternat.java: second.allInh_Cd_graph_trv(c); Any_vertex.java: void allInh_Cd_graph_trv(CountingVisitor c) { } Any_vertex_list.java: void allInh_Cd_graph_trv(CountingVisitor c) { } Cd_graph.java: allInh_Cd_graph_trv(c); Cd_graph.java: void allInh_Cd_graph_trv(CountingVisitor c) { Cd_graph.java: first.allInh_Cd_graph_trv(c); Cd_graph.java: rest.allInh_Cd_graph_trv(c); Construct.java: void allInh_Cd_graph_trv(CountingVisitor c) { Construct.java: c_ns.allInh_Cd_graph_trv(c); Empty.java: void allInh_Cd_graph_trv(CountingVisitor c) { } Empty_cd_graph.java: void allInh_Cd_graph_trv(CountingVisitor c) { } Labeled_vertex.java: void allInh_Cd_graph_trv(CountingVisitor c) { Labeled_vertex.java: class_name.allInh_Cd_graph_trv(c); Nany_vertex_list.java: void allInh_Cd_graph_trv(CountingVisitor c) { Nany_vertex_list.java: first.allInh_Cd_graph_trv(c); Nany_vertex_list.java: rest.allInh_Cd_graph_trv(c); Neighbors.java: void allInh_Cd_graph_trv(CountingVisitor c) { } Syntax_vertex.java: void allInh_Cd_graph_trv(CountingVisitor c) { } Vertex.java: void allInh_Cd_graph_trv(CountingVisitor c) { How can you succinctly describe this traversal program as a traversal specification? |
|
From: Karl L. <li...@cc...> - 2002-09-24 19:38:01
|
Hi Jeff:
the enclosed paper contains some ideas on this topic of discovering
traversals.
Silva-Lepe's thesis contains more. I think there are many improvements
possible here. It is clear that following the Law of Demeter leads to
a lot of scattering which we would like to eliminate by using traversal
specs
and visitors.
I think it is not easy to refactor code that it is not written in a
traversal-visitor
style into this style. Your thoughts below sound promissing.
You can always automatically construct a traversal strategy using the
following approach:
Input: class graph G and a subgraph TG of G which denotes the traversal.
Source s and target t.
Output: from s bypassing { ... } to t
Algorithm:
Color edges reachable from s red.
Color edges from which t is reachable blue.
If red intersect blue is too big, add an edge to { ... } and repeat.
But those negative strategies with bypassing are not very robust.
-- Karl
> -----Original Message-----
> From: dem...@li...
> [mailto:dem...@li...]On Behalf Of Jeffrey
> Palm
> Sent: Tuesday, September 24, 2002 1:12 PM
> To: demetercop-info
> Subject: [Demetercop-info] discovering traversals
>
>
> Karl and Ken
>
> I had another idea, which was extending the eclipse tool to discover
> traversals of objects through the program, and, possibly, offer a
> solution in DJ.
>
> The idea would be to construct a graph whose vertices would be method
> declarations and whose edges would be method calls. Then for each
> object created track whether it is being sent through a traversal.
>
> After that suggest DJ solutions for creating traversal strategies...
>
> Any thoughts on this??? Thanks.
> Jeff
>
> --
> Jeffrey Palm --> http://jeffpalm.com
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> Demetercop-info mailing list
> Dem...@li...
> https://lists.sourceforge.net/lists/listinfo/demetercop-info
>
|
|
From: Jeffrey P. <jd...@cs...> - 2002-09-24 16:11:29
|
Karl and Ken I had another idea, which was extending the eclipse tool to discover traversals of objects through the program, and, possibly, offer a solution in DJ. The idea would be to construct a graph whose vertices would be method declarations and whose edges would be method calls. Then for each object created track whether it is being sent through a traversal. After that suggest DJ solutions for creating traversal strategies... Any thoughts on this??? Thanks. Jeff -- Jeffrey Palm --> http://jeffpalm.com |
|
From: Jeffrey P. <jd...@cs...> - 2002-09-23 16:39:11
|
I've looked at all the errors in the Jakarta Ant Project and found 17 that map directly to a point in source code. Here's what I (and the eclipse system) found: ID SEMANTIC CODE LoD Bad Soln 624 Y ? 1125 Y N 1208 Y N 1254 Y N 1543 Y N 1681 Y N 1848 Y N 3024 Y N 3271 Y ? 3556 Y Y 4008 Y ? 4366 Y N 4870 Y ? 5056 Y N 5230 Y N 7538 Y ? 8575 Y ? 9024 Y ? 9574 Y ? 9762 Y N 10456 Y Y Y 10576 Y ? Key: ID ::= Error identier SEMANTIC ::= Y if a semantic error, N otherwise CODE ::= Y if a coding error, N otherwise LoD ::= Y if caused by LoD violation, ? is don't know yet Bad Soln ::= Y if the solution contained LoD violation I've checked all the error reports and fixes as well as this file in CVS under demetercop/doc/ant-errors. These results suggest no correlation between LoD violations and errors, but I'm looking elsewhere for evidence of this. I seem to think that errors in programs such as parsers and other text tools would contain a high percentage of errors that map to source code caused by violating LoD... I'll keep looking. Otherwise, the eclipse system seems to find all errors -- there are still a few bugs. It fixes those errors caused by explicit message passing (i.e. method calling), but doesn't fix implicit messages (i.e. field references). Fully implementing this should take a little time, but should be a bounded amount of time. I'd like to get some bug data supporting the hypothesis that violations of LoD directly lead to errors in code.. I think this could be a paper at AOSD, so I'll concentrate on this for the time being. If (and, hopefully when) I find data supporting this, I can use some of the ideas from the Maryland paper Karl sent regarding statistical significance, and I'd probably expand that to include some notion of distance between the error and the actual violation. I.e., the weight of the violation would involve a distance (calculated from its position in the source code) to the error. Jeff -- Jeffrey Palm --> http://jeffpalm.com |