add a charger for param analysis

This commit is contained in:
huoyo 2022-03-08 22:46:48 +08:00
parent 55aef2a659
commit e6249fbeaa
8 changed files with 65 additions and 57 deletions

View File

@ -16,6 +16,7 @@ public class DefaultConfig {
private Double threshold;
private String pointcut;
private Boolean exceptionEnable;
private Boolean paramAnalyse;
private String saveSaver;
private Boolean saveAsync;
private Integer threadNum;
@ -127,4 +128,12 @@ public class DefaultConfig {
public void setAuthEnable(Boolean authEnable) {
this.authEnable = authEnable;
}
public Boolean getParamAnalyse() {
return paramAnalyse;
}
public void setParamAnalyse(Boolean paramAnalyse) {
this.paramAnalyse = paramAnalyse;
}
}

View File

@ -58,6 +58,7 @@ public class LoadConfig {
config.setEnable(defaultConfig.getEnable()==null?kotimeEnable:defaultConfig.getEnable());
config.setContextPath(defaultConfig.getContextPath());
config.setAuthEnable(defaultConfig.getAuthEnable()==null?false:defaultConfig.getAuthEnable());
config.setParamAnalyse(defaultConfig.getParamAnalyse()==null?true:defaultConfig.getParamAnalyse());
Context.setConfig(config);
log.info("kotime=>loading config");

View File

@ -58,7 +58,7 @@ public class MemoryBase implements GraphService {
List<Class<?>> baseTypes = Arrays.asList(Integer.class, Double.class, Float.class, String.class, Boolean.class, MultipartFile.class);
public void addMethodAnalyse(String methodId, Parameter[] names, Object[] values, double v) {
public void addParamAnalyse(String methodId, Parameter[] names, Object[] values, double v) {
List<String> params = new ArrayList<>();
for (int i = 0; i < names.length; i++) {
Class<?> type = names[i].getType();

View File

@ -18,7 +18,7 @@ public class MysqlBase implements GraphService {
}
@Override
public void addMethodAnalyse(String methodId, Parameter[] names, Object[] values, double v) {
public void addParamAnalyse(String methodId, Parameter[] names, Object[] values, double v) {
}

View File

@ -54,7 +54,9 @@ public class RunTimeHandler implements MethodInterceptor {
graphService.addMethodNode(parent);
graphService.addMethodNode(current);
graphService.addMethodRelation(parent, current);
graphService.addMethodAnalyse(current.getId(),invocation.getMethod().getParameters(), invocation.getArguments(),((end - begin) / 1000000.0));
if (Context.getConfig().getParamAnalyse()) {
graphService.addParamAnalyse(current.getId(),invocation.getMethod().getParameters(), invocation.getArguments(),((end - begin) / 1000000.0));
}
MethodStack.clear();
return obj;
}

View File

@ -27,7 +27,7 @@ public interface GraphService {
void addMethodNode(MethodNode methodNode);
void addMethodAnalyse(String methodId,Parameter[] names, Object[] values,double v);
void addParamAnalyse(String methodId, Parameter[] names, Object[] values, double v);
void addExceptionNode(ExceptionNode exceptionNode);

View File

@ -19,11 +19,14 @@ public class Common {
public static String getRoute(MethodInvocation pjp) {
Class<?> targetClass = pjp.getThis().getClass();
String[] classRoute = getRouteValue(targetClass);
if (classRoute == null || classRoute.length==0) {
if (classRoute == null || classRoute.length == 0) {
return null;
}
StringBuilder routes = new StringBuilder(classRoute[0]);
String[] methodRoute = getRouteValue(pjp.getMethod());
if (methodRoute == null || methodRoute.length == 0) {
return null;
}
if (methodRoute[0].startsWith("/")) {
routes.append(methodRoute[0]);
} else {
@ -33,65 +36,51 @@ public class Common {
}
private static String[] getRouteValue(Class<?> targetClass) {
String[] methodRoute = null;
RequestMapping methodAnnotationRequest = targetClass.getAnnotation(RequestMapping.class);
if (methodAnnotationRequest == null) {
PostMapping methodAnnotationPost = targetClass.getAnnotation(PostMapping.class);
if (methodAnnotationPost == null) {
GetMapping methodAnnotationGet = targetClass.getAnnotation(GetMapping.class);
if (methodAnnotationGet == null) {
PutMapping methodAnnotationPut = targetClass.getAnnotation(PutMapping.class);
if (methodAnnotationPut == null) {
DeleteMapping methodAnnotationDelete = targetClass.getAnnotation(DeleteMapping.class);
if (methodAnnotationDelete == null) {
return null;
} else {
methodRoute = methodAnnotationDelete.value();
}
} else {
methodRoute = methodAnnotationPut.value();
}
} else {
methodRoute = methodAnnotationGet.value();
}
} else {
methodRoute = methodAnnotationPost.value();
}
} else {
methodRoute = methodAnnotationRequest.value();
if (methodAnnotationRequest != null) {
return methodAnnotationRequest.value();
}
return methodRoute;
PostMapping methodAnnotationPost = targetClass.getAnnotation(PostMapping.class);
if (methodAnnotationPost != null) {
return methodAnnotationPost.value();
}
GetMapping methodAnnotationGet = targetClass.getAnnotation(GetMapping.class);
if (methodAnnotationGet != null) {
return methodAnnotationGet.value();
}
PutMapping methodAnnotationPut = targetClass.getAnnotation(PutMapping.class);
if (methodAnnotationPut != null) {
return methodAnnotationPut.value();
}
DeleteMapping methodAnnotationDelete = targetClass.getAnnotation(DeleteMapping.class);
if (methodAnnotationDelete != null) {
return methodAnnotationDelete.value();
}
return null;
}
private static String[] getRouteValue(Method method) {
String[] methodRoute = null;
RequestMapping methodAnnotationRequest = method.getAnnotation(RequestMapping.class);
if (methodAnnotationRequest == null) {
PostMapping methodAnnotationPost = method.getAnnotation(PostMapping.class);
if (methodAnnotationPost == null) {
GetMapping methodAnnotationGet = method.getAnnotation(GetMapping.class);
if (methodAnnotationGet == null) {
PutMapping methodAnnotationPut = method.getAnnotation(PutMapping.class);
if (methodAnnotationPut == null) {
DeleteMapping methodAnnotationDelete = method.getAnnotation(DeleteMapping.class);
if (methodAnnotationDelete == null) {
return null;
} else {
methodRoute = methodAnnotationDelete.value();
}
} else {
methodRoute = methodAnnotationPut.value();
}
} else {
methodRoute = methodAnnotationGet.value();
}
} else {
methodRoute = methodAnnotationPost.value();
}
} else {
methodRoute = methodAnnotationRequest.value();
if (methodAnnotationRequest != null) {
return methodAnnotationRequest.value();
}
return methodRoute;
PostMapping methodAnnotationPost = method.getAnnotation(PostMapping.class);
if (methodAnnotationPost != null) {
return methodAnnotationPost.value();
}
GetMapping methodAnnotationGet = method.getAnnotation(GetMapping.class);
if (methodAnnotationGet != null) {
return methodAnnotationGet.value();
}
PutMapping methodAnnotationPut = method.getAnnotation(PutMapping.class);
if (methodAnnotationPut != null) {
return methodAnnotationPut.value();
}
DeleteMapping methodAnnotationDelete = method.getAnnotation(DeleteMapping.class);
if (methodAnnotationDelete != null) {
return methodAnnotationDelete.value();
}
return null;
}
public static MethodType getMethodType(MethodInvocation pjp) {

View File

@ -97,6 +97,13 @@
"defaultValue": "",
"description": "password for authentication",
"sourceType": "cn.langpy.kotime.config.DefaultConfig"
},
{
"name": "ko-time.param-analyse",
"type": "java.lang.Boolean",
"defaultValue": true,
"description": "the charger of analysing params",
"sourceType": "cn.langpy.kotime.config.DefaultConfig"
}
],
"hints": []