diff --git a/Jenkinsfile b/Jenkinsfile index 6eaad7b07843..06c86a1c1c71 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -56,7 +56,15 @@ pipeline { sh 'ls' sh 'git status' } - } + } + + stage('Check agent plugin instrumentation imports') { + steps { + sh './tools/check/agent/plugin/PluginImportedCheck.sh apm-sdk-plugin' + sh './tools/check/agent/plugin/PluginImportedCheck.sh apm-toolkit-activation' + sh './tools/check/agent/plugin/PluginImportedCheck.sh optional-plugins' + } + } stage('Test & Report') { steps { diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/apache/skywalking/apm/plugin/motan/define/MotanConsumerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/apache/skywalking/apm/plugin/motan/define/MotanConsumerInstrumentation.java index 6d953a835ffe..cc40d74b747e 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/apache/skywalking/apm/plugin/motan/define/MotanConsumerInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/apache/skywalking/apm/plugin/motan/define/MotanConsumerInstrumentation.java @@ -18,7 +18,6 @@ package org.apache.skywalking.apm.plugin.motan.define; -import com.weibo.api.motan.rpc.Request; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; @@ -41,7 +40,7 @@ public class MotanConsumerInstrumentation extends ClassInstanceMethodsEnhancePlu */ private static final String CONSTRUCTOR_INTERCEPT_CLASS = "org.apache.skywalking.apm.plugin.motan.MotanConsumerInterceptor"; /** - * Class that intercept {@link com.weibo.api.motan.rpc.AbstractProvider#call(Request)}. + * Class that intercept {@link com.weibo.api.motan.rpc.AbstractProvider#call(com.weibo.api.motan.rpc.Request)}. */ private static final String PROVIDER_INVOKE_INTERCEPT_CLASS = "org.apache.skywalking.apm.plugin.motan.MotanConsumerInterceptor"; diff --git a/apm-sniffer/apm-sdk-plugin/mysql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/jdbc/mysql/v8/define/ConnectionImplCreateInstrumentation.java b/apm-sniffer/apm-sdk-plugin/mysql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/jdbc/mysql/v8/define/ConnectionImplCreateInstrumentation.java index ab5a839208b3..c016f871508d 100644 --- a/apm-sniffer/apm-sdk-plugin/mysql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/jdbc/mysql/v8/define/ConnectionImplCreateInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/mysql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/jdbc/mysql/v8/define/ConnectionImplCreateInstrumentation.java @@ -19,7 +19,6 @@ package org.apache.skywalking.apm.plugin.jdbc.mysql.v8.define; -import com.mysql.cj.conf.HostInfo; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.skywalking.apm.agent.core.plugin.interceptor.StaticMethodsInterceptPoint; @@ -31,7 +30,7 @@ import static org.apache.skywalking.apm.agent.core.plugin.match.NameMatch.byName; /** - * interceptor the method {@link com.mysql.cj.jdbc.ConnectionImpl#getInstance(HostInfo)} + * interceptor the method {@link com.mysql.cj.jdbc.ConnectionImpl#getInstance(com.mysql.cj.conf.HostInfo)} * instead of {@link com.mysql.cj.jdbc.Driver#connect(String, Properties)} * @author: dingshaocheng */ diff --git a/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/servicecomb/define/TransportClientHandlerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/servicecomb/define/TransportClientHandlerInstrumentation.java index 2f43f95b1cf1..c8bfab42289a 100644 --- a/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/servicecomb/define/TransportClientHandlerInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/servicecomb/define/TransportClientHandlerInstrumentation.java @@ -18,7 +18,6 @@ package org.apache.skywalking.apm.plugin.servicecomb.define; -import io.servicecomb.core.handler.impl.TransportClientHandler; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; @@ -30,7 +29,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; /** - * {@link TransportClientHandlerInstrumentation} represents that skywalking intercept {@link TransportClientHandler} by + * {@link TransportClientHandlerInstrumentation} represents that skywalking intercept {@link io.servicecomb.core.handler.impl.TransportClientHandler} by * using linkTransportClientHandlerInterceptor * * @author lytscu diff --git a/tools/check/agent/plugin/PluginImportedCheck.sh b/tools/check/agent/plugin/PluginImportedCheck.sh new file mode 100755 index 000000000000..508449171399 --- /dev/null +++ b/tools/check/agent/plugin/PluginImportedCheck.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +plugin_dir=$1 +for dir in `ls "./apm-sniffer/$plugin_dir/"`; do + echo "Scanning $dir" + for f in `find ./apm-sniffer/$plugin_dir/$dir -name *Instrumentation.java `; do + NUM=`head -400 $f | grep ^import |grep -Ev "^import\s+(static\s+)*net.bytebuddy\\." \ + | grep -Ev "^import\s+(static\s+)*org.apache.skywalking\\." |grep -Ev "^import\s+(static\s+)*java\\." | wc -l` + if [ $NUM -gt 0 ] ; then + echo "Plugin: $dir($f), only allow to import JDK and ByteBuddy classes in Instrumentation definition."; + exit 1; + fi + done +done