1 23 package org.hammurapi.inspectors; 24 25 import org.hammurapi.InspectorBase; 26 27 import com.pavelvlasov.jsel.JselException; 28 import com.pavelvlasov.jsel.LanguageElement; 29 import com.pavelvlasov.jsel.OperationInfo; 30 import com.pavelvlasov.jsel.expressions.MethodCall; 31 import com.pavelvlasov.review.SourceMarker; 32 33 39 public class ThreadYieldRule extends InspectorBase { 40 41 44 private static final String VIOLATION_CLASS = "java.lang.Thread"; 45 46 49 private static final String VIOLATION_METHOD = "yield"; 50 51 56 public void visit(MethodCall element) { 57 try { 58 OperationInfo provider=element.getProvider(); 59 if (provider==null) { 60 context.warn((SourceMarker) element, "Provider is null for "+element+" at "+((LanguageElement) element).getLocation()); 61 } else if (VIOLATION_METHOD.equals(provider.getName()) && provider.getParameterTypes().length==0 && provider.getDeclaringType().isKindOf(VIOLATION_CLASS)) { 62 context.reportViolation((SourceMarker) element); 63 } 64 } catch (JselException e) { 65 context.warn((SourceMarker) element, e); 66 } 67 } 68 69 } 70 | Popular Tags |