Hey Michał,
Let me try to answer your question from a SonarJava plugin perspective.
The following classes are definitely not part of the API but only used internally:
org.sonar.java.matcher.MethodMatcher
org.sonar.java.matcher.TypeCriteria
org.sonar.java.ast.parser.ArgumentListTreeImpl;
Consequently, I don't see how you could
not depend of the plugin.
We have been developing the MethodMatcher and TypeCriteria classes for a while now, and it could be a nice idea to move them to API at some point. I know how useful they can be. I created the following ticket to handle it:
SONARJAVA-2357). The ArgumentListTreeImpl is however purely internal and should definitely not be used in any custom rules. What do you need from it which is not exposed in the
org.sonar.plugins.java.api.tree.Arguments API !? I can't see anything from the implementation class which is not already exposed.
This is also the Java Plugin which handle registration of custom rules. You need the CheckRegistrar to register them, and that's the JavaPlugin which trigger the rules.
Regarding Guava and StringUtils dependencies, I'm unfortunately far to be an expert in class loading, so I would only encourage you to try using your own versions, and see how it works. Maybe try using methods from Guava which are typically not present in the version used by SonarJava.
Hope this helps,
Michael