Writing a new custom Java Rule to find a method invocation


(Arun Rajendran) #1

I am trying to implement some custom rules using java, and I’m having trouble to implement a rule which require me to gather all the invocation of a certain method say Methodone(). I am also need to find the object name which invokes this method. Please help me


(Michael Gumowski) #2

Hello,

There is a lot of missing info here… If you want to get some help, you’ll need to help us helping you.

  • What language are you targeting?
  • What did you try already?
  • If it’s Java, did you follow the tutorial?
  • Can you provide the code of your rule? (or equivalent if it can not be shared publicly)
  • Can you provide the test code you are targeting with your rule? (again, anonymized if needed)

Regards,
Michael


(Arun Rajendran) #3

Sorry for writing such a vague question. Full details here

Targeting language is Java

I am trying to find whether a method is invoked or not
Targeting code:

int testlab = labOps.createlab(args..);

I need to find whether createlab(args..) method is invoked or not.

My test code

public List<Tree.Kind> nodesToVisit() {
		    // Register to the kind of nodes you want to be called upon visit.
		    return ImmutableList.of(
		    		    		Tree.Kind.METHOD_INVOCATION);
		    		
		  }

		  @Override
		  public void visitNode(Tree tree) {

                  if (tree.is(Tree.Kind.METHOD_INVOCATION)) {
		    	
		      MethodInvocationTree mit = (MethodInvocationTree) tree;
	              String mname = mit.symbol().name();
                      System.out.println("Invoked Method  "+ mname );
                      }
                }

The above code is not returning the method name createlab(args..).
I also need to find the variable name “testlab” which is invoking this method and also the list of arguments passed to that method

I followed the tutorial and based on that I have written the above code.


(Kad) #4

What is this line returning ?