NullPointerException when SonarScanner work

  • Versions used (SonarQube, Scanner, Plugin, and any relevant extension)
    • SonarQube Community Edition 9.0.1 (build 46107)
    • SonarScanner 4.6.2.2472
    • Java 11.0.11 AdoptOpenJDK (64-bit)
    • Linux 3.10.0-1160.31.1.el7.x86_64 amd64
  • Error observed (wrap logs/code around triple quote ``` for proper formatting)
    Exception log
16:27:12 ERROR: Unable to run check class org.sonar.java.filters.PostAnalysisIssueFilter -  on file 'test-dispatch-service-provider/src/main/java/com/test/dispatch/service/provider/strategy/DispatchListener.java', To help improve the SonarSource Java Analyzer, please report this problem to SonarSource: see https://community.sonarsource.com/
16:27:12 java.lang.NullPointerException: null
16:27:12 	at org.eclipse.jdt.core.dom.MethodBinding.filterTypeAnnotations(MethodBinding.java:244)
16:27:12 	at org.eclipse.jdt.core.dom.MethodBinding.getAnnotations(MethodBinding.java:133)
16:27:12 	at org.sonar.java.model.JSymbol.convertMetadata(JSymbol.java:353)
16:27:12 	at org.sonar.java.model.JSymbol.metadata(JSymbol.java:333)
16:27:12 	at org.sonar.java.filters.GeneratedCodeFilter.isGenerated(GeneratedCodeFilter.java:55)
16:27:12 	at org.sonar.java.filters.GeneratedCodeFilter.visitMethod(GeneratedCodeFilter.java:48)
16:27:12 	at org.sonar.java.model.declaration.MethodTreeImpl.accept(MethodTreeImpl.java:231)
16:27:12 	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:40)
16:27:12 	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:34)
16:27:12 	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitClass(BaseTreeVisitor.java:70)
16:27:12 	at org.sonar.java.filters.GeneratedCodeFilter.visitClass(GeneratedCodeFilter.java:43)
16:27:12 	at org.sonar.java.model.declaration.ClassTreeImpl.accept(ClassTreeImpl.java:197)
16:27:12 	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:40)
16:27:12 	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:34)
16:27:12 	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitCompilationUnit(BaseTreeVisitor.java:52)
16:27:12 	at org.sonar.java.model.JavaTree$CompilationUnitTreeImpl.accept(JavaTree.java:196)
16:27:12 	at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:40)
16:27:12 	at org.sonar.java.filters.AnyRuleIssueFilter.scanFile(AnyRuleIssueFilter.java:45)
16:27:12 	at org.sonar.java.filters.GeneratedCodeFilter.scanFile(GeneratedCodeFilter.java:35)
16:27:12 	at org.sonar.java.filters.PostAnalysisIssueFilter.lambda$scanFile$1(PostAnalysisIssueFilter.java:56)
16:27:12 	at java.base/java.util.Arrays$ArrayList.forEach(Unknown Source)
16:27:12 	at java.base/java.util.Collections$UnmodifiableCollection.forEach(Unknown Source)
16:27:12 	at org.sonar.java.filters.PostAnalysisIssueFilter.scanFile(PostAnalysisIssueFilter.java:56)
16:27:12 	at org.sonar.java.model.VisitorsBridge.lambda$runScanner$0(VisitorsBridge.java:151)
16:27:12 	at org.sonar.java.model.VisitorsBridge.runScanner(VisitorsBridge.java:156)
16:27:12 	at org.sonar.java.model.VisitorsBridge.runScanner(VisitorsBridge.java:151)
16:27:12 	at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:134)
16:27:12 	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:132)
16:27:12 	at org.sonar.java.ast.JavaAstScanner.lambda$scan$1(JavaAstScanner.java:83)
16:27:12 	at org.sonar.java.model.JParserConfig$FileByFile.parse(JParserConfig.java:223)
16:27:12 	at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:81)
16:27:12 	at org.sonar.java.JavaFrontend.scanAndMeasureTask(JavaFrontend.java:118)
16:27:12 	at org.sonar.java.JavaFrontend.scan(JavaFrontend.java:108)
16:27:12 	at org.sonar.plugins.java.JavaSensor.execute(JavaSensor.java:109)
16:27:12 	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
16:27:12 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
16:27:12 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
16:27:12 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
16:27:12 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
16:27:12 	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:79)
16:27:12 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
16:27:12 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
16:27:12 	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:382)
16:27:12 	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:378)
16:27:12 	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:347)
16:27:12 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
16:27:12 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
16:27:12 	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:136)
16:27:12 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
16:27:12 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
16:27:12 	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
16:27:12 	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
16:27:12 	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
16:27:12 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
16:27:12 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
16:27:12 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
16:27:12 	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
16:27:12 	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
16:27:12 	at com.sun.proxy.$Proxy0.execute(Unknown Source)
16:27:12 	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
16:27:12 	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
16:27:12 	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
16:27:12 	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
16:27:12 	at org.sonarsource.scanner.cli.Main.main(Main.java:61)

Cause Exception Class

package com.test.dispatch.service.provider.strategy;

import com.alibaba.fastjson.JSON;
import com.test.common.spring.util.RedisLockHelper;
import com.test.dispatch.service.api.enums.DicSummaryEnum;
import com.test.dispatch.service.api.enums.DicTypeEnum;
import com.test.dispatch.service.api.enums.RedisKeyPreFixEnum;
import com.test.dispatch.service.api.vo.response.task.schedule.TaskScheduleSimpleVO;
import com.test.dispatch.service.provider.model.*;
import com.test.dispatch.service.provider.service.*;
import com.test.dispatch.service.provider.strategy.event.DispatchTriggerEvent;
import com.test.dispatch.service.provider.strategy.event.UpdateAppAuthEvent;
import com.test.dispatch.service.provider.strategy.util.HolidayTimePeriodUtils;
import com.test.dispatch.service.provider.strategy.vo.AppTypePriorityVO;
import com.test.dispatch.service.provider.strategy.vo.dispatch.DispatchDataInfoVO;
import com.test.dispatch.service.provider.strategy.vo.dispatch.DispatchParamsVO;
import com.test.dispatch.service.provider.strategy.vo.dispatch.DispatchResultVO;
import com.test.dispatch.service.provider.strategy.vo.working.HolidayMonthVO;
import com.test.dispatch.service.provider.strategy.vo.working.TimePeriodVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.concurrent.AtomicSafeInitializer;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.event.EventListener;
import org.springframework.core.env.Environment;
import org.springframework.data.redis.core.BoundZSetOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;



@Slf4j
@Component
public class DispatchListener implements ApplicationContextAware {

    private static final String DISPATCH_KEY = RedisKeyPreFixEnum.LOCK_KEY_PREFIX + "STRATEGY_EXECUTE";

    private final AtomicSafeInitializer<Map<String, DispatchStrategy>> dispatchStrategyInitializer;

    private ApplicationContext applicationContext;

    @Lazy
    @Autowired
    private AppService appService;

    @Autowired
    private StrategyService strategyService;

    @Autowired
    private DicConfigService dicConfigService;

    @Autowired
    private EngineConfigService engineConfigService;

    @Autowired
    private DispatchDataService dispatchDataService;

    @Autowired
    private AppTimePeriodService appTimePeriodService;

    @Autowired
    private AppHolidayService appHolidayService;

    @Resource
    private AppConfigService appConfigService;

    @Autowired
    private ApplicationEventPublisher publisher;

    @Resource(name = "dbExecutor")
    private ThreadPoolTaskExecutor executor;

    @Resource(name = "eventExecutor")
    private ThreadPoolTaskExecutor eventExecutor;

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Autowired
    private AppRateService appRateService;

    @Autowired
    private RedisLockHelper redisLockHelper;

    @Autowired
    private TaskScheduleService taskScheduleService;

    @Autowired
    private Environment environment;

    @Override
    public void setApplicationContext(@NotNull ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    {
        dispatchStrategyInitializer = new AtomicSafeInitializer<Map<String, DispatchStrategy>>(){
            @Override
            protected Map<String, DispatchStrategy> initialize(){
                return applicationContext.getBeansOfType(DispatchStrategy.class);
            }
        };
    }


    @EventListener
    public Future<List<DispatchDataInfoVO>> onApplicationEvent(DispatchTriggerEvent event) {
        //触发调度时,使用event线程池,仅保留最新的一条
        if (event.getScene() == 1) {
            return eventExecutor.submit(() -> {
                try {
                    return dealApplicationEvent(event);
                } catch (Exception e) {
                    log.error("执行调度策略出错,入参:{}", toJsonString(event));
                    log.error("", e);
                    return Collections.emptyList();
                }
            });
        }else {
            try {
                List<DispatchDataInfoVO> list = dealApplicationEvent(event);
                return AsyncResult.forValue(list);
            } catch (Exception e) {
                log.error("执行调度策略出错,入参:{}", toJsonString(event));
                log.error("", e);
                return AsyncResult.forExecutionException(e);
            }
        }
    }

    private String toJsonString(Object o) {
        return JSON.toJSONStringWithDateFormat(o, "yyyy-MM-ddHH:mm:ss");
    }

    private List<DispatchDataInfoVO> dealApplicationEvent(DispatchTriggerEvent event) throws Exception {
        log.info("dispatch start");
        long start = System.currentTimeMillis();
        List<DispatchDataInfoVO> list = Collections.emptyList();
        BoundZSetOperations<String, String> zSetOps = redisTemplate.boundZSetOps(DISPATCH_KEY);
        Double score = null;
        try {
            if (!ArrayUtils.contains(environment.getActiveProfiles(),"local") && event.getScene() == 1) {
                zSetOps.add(JSON.toJSONString(event), event.getTimestamp());

                redisLockHelper.lock(DISPATCH_KEY, 10);

                Set<ZSetOperations.TypedTuple<String>> tuples = zSetOps.reverseRangeWithScores(0, 0);
                if (CollectionUtils.isEmpty(tuples)){
                    return list;
                }

                ZSetOperations.TypedTuple<String> next = tuples.iterator().next();
                score = next.getScore();

                //所有小于当前最大值的调度线程,不进行调度,直接返回
                if (score != null && score > event.getTimestamp()){
                    return list;
                }
            }
            DispatchParamsVO vo = new DispatchParamsVO();
            vo.setEvent(event);
            CountDownLatch latch = new CountDownLatch(9);
            Map<String, DispatchStrategy> dispatchStrategyMap = dispatchStrategyInitializer.get();
            Map<Long, Map<Integer, Integer>> mapMap = new HashMap<>();
            Map<Long, Set<App>> strategyAppMap = new HashMap<>(dispatchStrategyMap.size());
            Map<Long, DispatchStrategy> strategyMap = new HashMap<>(dispatchStrategyMap.size());
            log.info("dispatch start db query...");
            long dbQueryStart = System.currentTimeMillis();
            executor.execute(()->{ initMaxAuth(vo);                     latch.countDown();});
            executor.execute(()->{ initSendErrorMails(vo);              latch.countDown();});
            executor.execute(()->{ initTimePeriodMap(vo);               latch.countDown();});
            executor.execute(()->{ initHolidayMap(event, vo);           latch.countDown();});
            executor.execute(()->{ initAppConfigMap(vo);                latch.countDown();});
            executor.execute(()->{ initAppTypePriorityMap(mapMap);      latch.countDown();});
            executor.execute(()->{ initStrategyAppMap(strategyAppMap);  latch.countDown();});
            executor.execute(()->{ initAppRate(vo);                     latch.countDown();});
            executor.execute(()->{ initAppLastWorkloadMap(vo);          latch.countDown();});

            Future<List<Strategy>> futureStrategyList = executor.submit(() -> {
                List<Strategy> strategyList = strategyService.findAll();
                //调度策略按照优先级排序
                strategyList.sort(Comparator.comparing(Strategy::getPriority));
                for (Strategy strategy : strategyList) {
                    strategyMap.put(strategy.getId(), dispatchStrategyMap.get(strategy.getBean_name()));
                }
                return strategyList;
            });

            //是否一键还原
            String value = dicConfigService.getValueByCode(DicTypeEnum.SYSTEM_CODE, DicSummaryEnum.DISPATCH_RESET);
            boolean dispatchReset = Boolean.parseBoolean(value.trim());

            log.debug("dispatch db query, wait latch...");
            latch.await(5, TimeUnit.SECONDS);
            log.info("dispatch end db query..., {} ms", System.currentTimeMillis() - dbQueryStart);

            //正常调度时
            if (!dispatchReset){

                List<Strategy> strategyList = futureStrategyList.get(5, TimeUnit.SECONDS);

                for (Strategy strategy : strategyList) {
                    Set<App> apps = strategyAppMap.get(strategy.getId());

                    if (CollectionUtils.isEmpty(apps)){
                        continue;
                    }

                    int priority = strategy.getPriority() == null ? Integer.MAX_VALUE : strategy.getPriority();
                    //根据策略进行调度
                    list = doDispatchByStrategy(list, vo, priority, apps,
                            mapMap.get(strategy.getId()), strategyMap.get(strategy.getId()));
                }
            //一键还原时
            }else {
                Set<App> apps = new HashSet<>();
                for (Set<App> set : strategyAppMap.values()) {
                    apps.addAll(set);
                }
                //根据策略进行调度
                list = doDispatchByStrategy(list, vo, -1, apps,
                        null, dispatchStrategyMap.get(DispatchStrategy.RESET_DISPATCH_STRATEGY_NAME));
            }
            //根据场景,选择是否存储调度计划数据,并触发更新应用授权任务
            saveAndPublishEvent(list, event.getScene());
        } finally {
            log.info("dispatch end, {} ms", System.currentTimeMillis() - start);
            if (!ArrayUtils.contains(environment.getActiveProfiles(),"local") && (event == null || event.getScene() == 1)) {
                if (score != null && score > 0) {
                    //1、丢弃所有过期请求,只保留最新的调度事件;2、score - 1 避免比最大时间戳小的事件不执行时候,把最大的也删除导致最终不执行
                    zSetOps.removeRangeByScore(0, score-1);
                }
                redisLockHelper.unlock(DISPATCH_KEY);
            }
        }
        return list;
    }

    private void initAppLastWorkloadMap(DispatchParamsVO vo) {
        long start = System.currentTimeMillis();
       List<TaskScheduleSimpleVO> list = taskScheduleService.getTaskLastTime();
        Map<Long, Long> appLastWorkloadMap = new HashMap<>(list.size());
        for (TaskScheduleSimpleVO simpleVO : list) {
            appLastWorkloadMap.put(simpleVO.getApp_id(), simpleVO.getLast_num());
        }
        vo.setAppLastWorkloadMap(appLastWorkloadMap);
        log.debug("dispatch end initAppLastWorkloadMap..., {} ms", System.currentTimeMillis() - start);
    }

    private void initAppRate(DispatchParamsVO vo) {
        long start = System.currentTimeMillis();
        Map<Long, AppRate> appRateMap = new HashMap<>();
        List<AppRate> list = appRateService.findAll();
        for (AppRate appRate : list) {
            appRateMap.put(appRate.getApp_id(), appRate);
        }
        vo.setAppRateMap(appRateMap);
        log.debug("dispatch end initAppRate..., {} ms", System.currentTimeMillis() - start);
    }


    private List<DispatchDataInfoVO> doDispatchByStrategy(List<DispatchDataInfoVO> list, DispatchParamsVO vo,
                                                          Integer priority, Set<App> apps,
                                                          Map<Integer, Integer> priorityMap, DispatchStrategy strategy) throws Exception {
        String name = strategy.getClass().getName();
        log.info("dispatch strategy {} execute start", name);
        long start = System.currentTimeMillis();
        vo.updateStrategyData(apps, priority, priorityMap, list);
        DispatchResultVO resultVO = strategy.dispatch(vo);
        log.info("dispatch strategy {} execute end, {} ms", name, System.currentTimeMillis() - start);
        return resultVO.getDispatchDataList();
    }

    private void initAppTypePriorityMap(Map<Long, Map<Integer, Integer>> mapMap) {
        long start = System.currentTimeMillis();
        List<AppTypePriorityVO> appTypePriorityList = strategyService.findAppTypePriority();
        for (AppTypePriorityVO priorityVO : appTypePriorityList) {
            Map<Integer, Integer> appTypePriorityMap = mapMap.computeIfAbsent(priorityVO.getStrategy_id(), k -> new HashMap<>());
            appTypePriorityMap.put(priorityVO.getApp_type(), priorityVO.getPriority());
        }
        log.debug("dispatch end initAppTypePriorityMap..., {} ms", System.currentTimeMillis() - start);
    }

    private void initAppConfigMap(DispatchParamsVO vo) {
        long start = System.currentTimeMillis();
        Map<String, AppConfig> configMap = HolidayTimePeriodUtils.getAppConfigMap(appConfigService);
        vo.setConfigMap(configMap);
        log.debug("dispatch end initAppConfigMap..., {} ms", System.currentTimeMillis() - start);
    }

    private void initHolidayMap(DispatchTriggerEvent event, DispatchParamsVO vo) {
        long start = System.currentTimeMillis();
        Map<String, HolidayMonthVO> holidayMap = HolidayTimePeriodUtils.getHolidayMap(appHolidayService, event.getBeginTime(), event.getEndTime());
        vo.setHolidayMap(holidayMap);
        log.debug("dispatch end initHolidayMap..., {} ms", System.currentTimeMillis() - start);
    }

    private void initTimePeriodMap(DispatchParamsVO vo) {
        long start = System.currentTimeMillis();
        Map<String, List<TimePeriodVO>> timePeriodMap = HolidayTimePeriodUtils.getTimePeriodMap(appTimePeriodService);
        vo.setTimePeriodMap(timePeriodMap);
        log.debug("dispatch end initTimePeriodMap..., {} ms", System.currentTimeMillis() - start);
    }

    private void initStrategyAppMap(Map<Long, Set<App>> map) {
        long start = System.currentTimeMillis();
        List<App> allApps = appService.findAllApps();
        for (App app : allApps) {
            Set<App> apps = map.computeIfAbsent(app.getStrategy_id(), k -> new HashSet<>());
            apps.add(app);
        }
        log.debug("dispatch end initStrategyAppMap..., {} ms", System.currentTimeMillis() - start);
    }

    private void initMaxAuth(DispatchParamsVO vo) {
        long start = System.currentTimeMillis();
        EngineConfig config = engineConfigService.getIFlyTotal();
        int maxAuth = 0;
        if (config != null ) {
            maxAuth = config.getAuth();
        }
        vo.setMaxAuth(maxAuth);
        log.debug("dispatch end initMaxAuth..., {} ms", System.currentTimeMillis() - start);
    }

    private void initSendErrorMails(DispatchParamsVO vo) {
        long start = System.currentTimeMillis();
        String value = dicConfigService.getValueByCode(DicTypeEnum.SYSTEM_CODE, DicSummaryEnum.SEND_ERROR_MAILS);
        vo.setSendErrorMails(Boolean.parseBoolean(value.trim()));
        log.debug("dispatch end initSendErrorMails..., {} ms", System.currentTimeMillis() - start);
    }

    private void saveAndPublishEvent(List<DispatchDataInfoVO> dispatchDataList, Integer scene) {
        long start = System.currentTimeMillis();
        if (CollectionUtils.isNotEmpty(dispatchDataList)) {
            if (scene == 1) {
                dispatchDataList.sort(Comparator.comparingLong(DispatchDataInfoVO::getApp_id)
                        .thenComparing(DispatchDataInfoVO::getStart_time));
                dispatchDataService.batchUpdate(dispatchDataList);
                publisher.publishEvent(new UpdateAppAuthEvent(this));
            }
        }
        log.info("dispatch end saveAndPublishEvent..., {} ms", System.currentTimeMillis() - start);
    }
}
  • Steps to reproduce
    use jenkins build maven project.
  • Potential workaround
  • Scanner command used when applicable (private details masked)
16:26:59 [测试-02-dispatch-service-provider] $ /opt/sonar-scanner/bin/sonar-scanner -Dsonar.host.url=http://localhost:9000 ******** -Dsonar.language=java -Dsonar.projectName=测试-test-dispatch-service-provider -Dsonar.projectVersion=1.0 -Dsonar.sourceEncoding=UTF-8 -Dsonar.projectKey=test-test-dispatch-service-provider -Dsonar.java.binaries=/data/jenkins/workspace/测试-02-dispatch-service-provider -Dsonar.sources=/data/jenkins/workspace/测试-02-dispatch-service-provider -Dsonar.projectBaseDir=/data/jenkins/workspace/测试-02-dispatch-service-provider
16:26:59 INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
16:26:59 INFO: Project root configuration file: NONE
16:26:59 INFO: SonarScanner 4.6.2.2472
16:26:59 INFO: Java 11.0.11 AdoptOpenJDK (64-bit)
16:26:59 INFO: Linux 3.10.0-1160.31.1.el7.x86_64 amd64
16:27:00 INFO: User cache: /root/.sonar/cache
16:27:00 INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
16:27:00 INFO: Project root configuration file: NONE
16:27:00 INFO: Analyzing on SonarQube server 9.0.1
16:27:00 INFO: Default locale: "en_US", source code encoding: "UTF-8"
16:27:00 INFO: Load global settings
16:27:00 INFO: Load global settings (done) | time=177ms
16:27:00 INFO: Server id: 11FCB4FF-AXsU4r-nRZSK55mItaCz
16:27:00 INFO: User cache: /root/.sonar/cache
16:27:00 INFO: Load/download plugins
16:27:00 INFO: Load plugins index
16:27:00 INFO: Load plugins index (done) | time=103ms
16:27:00 INFO: Plugin [l10nzh] defines 'l10nen' as base plugin. This metadata can be removed from manifest of l10n plugins since version 5.2.
16:27:00 INFO: Load/download plugins (done) | time=171ms
16:27:01 INFO: Process project properties
16:27:01 INFO: Process project properties (done) | time=8ms
16:27:01 INFO: Execute project builders
16:27:01 INFO: Execute project builders (done) | time=1ms
16:27:01 INFO: Project key: test-test-dispatch-service-provider
16:27:01 INFO: Base dir: /data/jenkins/workspace/测试-02-dispatch-service-provider
16:27:01 INFO: Working dir: /data/jenkins/workspace/测试-02-dispatch-service-provider/.scannerwork
16:27:01 INFO: Load project settings for component key: 'test-test-dispatch-service-provider'
16:27:01 INFO: Auto-configuring with CI 'Jenkins'
16:27:01 INFO: Load quality profiles
16:27:01 INFO: Load quality profiles (done) | time=306ms
16:27:01 INFO: Auto-configuring with CI 'Jenkins'
  • In case of SonarCloud:
    • ALM used (GitHub, Bitbucket Cloud, Azure DevOps)
    • CI system used (Bitbucket Cloud, Azure DevOps, Travis CI, Circle CI, Jenkins, other)
      Jenkins
1 Like

Hello @crazy-001 and welcome to the community!

Thanks for taking the time to report this issue.

The problem you are facing is probably related to SONARJAVA-3872, already fixed in the Java analyzer version 7.2 (available in SonarQube >= 9.1).

Feel free to come back to us if updating SonarQube does not solve this issue.

Best,
Quentin

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.