RSS feed

Linkedin Profile

Tags:
programming
seattle
things that bug me
wall art

Posts by month: 10/08 (2)
08/08 (1)
06/08 (2)
05/08 (1)
03/08 (3)
02/08 (1)
01/08 (2)
12/07 (2)
11/07 (1)
07/07 (1)
05/07 (2)
02/07 (1)
01/07 (1)
12/06 (1)
11/06 (1)
10/06 (1)
08/06 (1)
07/06 (1)
06/06 (2)
05/06 (1)
04/06 (2)
02/06 (1)
01/06 (2)
12/05 (3)
11/05 (2)
09/05 (5)
08/05 (5)
07/05 (7)
06/05 (3)
05/05 (6)
04/05 (8)
03/05 (7)
02/05 (7)
01/05 (6)
12/04 (2)
11/04 (3)
10/04 (5)
09/04 (3)
08/04 (5)
07/04 (5)
06/04 (4)
05/04 (4)
04/04 (9)
03/04 (4)
02/04 (3)
01/04 (5)
12/03 (1)
11/03 (14)
10/03 (8)


waspectj
2004-10-03

I need some way of querying source code in Visual Studio, so I decided to hack out something in a day and see what it looked like. The 'design' fits on a napkin:

  1. Has expressions for selecting classes, methods/members based on name
  2. Supports selection of members based on interactions with other classes, members based on name
  3. Supports wild-carding of names
  4. Supports compound, boolean statements
  5. Runs in VS, with a macro interface (for now)
This is really the evil (e.g. static, designed over breakfast) twin of the AspectJ pcd: hence waspectj. In AspectJ terms, the sort of queries I want to execute are:
	instanceof(sometype) && calls(a.b(int))
	
	calls(a.*(*))
	
	handles(someException)
	

But I want them to run against the currently loaded solution in VS, and return me some sort of graph showing the match and the context (e.g. if I'm matching on a method, give me the class as well). Turns out I need more than a day to do this - the implementation is coming along sloooowly. The only query running at 11pm is "get me a class with a name" (e.g. "instanceof(name)"). However, I haven't thought about the concrete syntax, so I don't have a parser, and I am just building expressions by hand. And no wild cards.

I think the problem is that I spent most of the day reading Running Money, but I'm pretty much on top of traversing the solution in VS, so hopefully I'll have some more expressions working this week.

Back to weblog