2015-01-29 4 views
4

업데이트 : 나는 Fedora 21에서 실행 중입니다. SonarQube - 5.0. SonarQube 러너 - 2.4SonarQube 러너가 분석 중에 NullPointerException을 던졌습니다.

UPDATE2 : Findbugs 버전 3.1, 자바 플러그인 V2.8

갱신 3 : 내가 설치 한

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class MyManager extends ParentManager { 
    public MyManager(int id, int var1, int var2, int var3) { 
     super(id, var1, var2, var3); 
    } 

    public void load() { 
     Connection con = null; 
     Statement st; 
     ResultSet res; 

     try { 

      con = DatabaseManager.getDataSource().getConnection(); 
      st = con.createStatement(); 

      int currentId = 0; 
      CurrentData currentData= null; 

      res = st.executeQuery("SELECT subjects.subjectname" + " AS name, " + 
        " subjects.subjectcode AS code, " + 
        " groups.groupname AS gname, " + 
        " groups.groupID AS gID , " + 
        " subjects.sID AS sID, " + 
        " groups.isMain AS ismain " + 
        " FROM joinGroup LEFT JOIN groups ON joinGroup.groupID=groups.groupID " + 
        " LEFT JOIN subjects ON subjects.sID=groups.sID " + 
        " WHERE joinGroup.sID=" + id + " " + 
        " AND groups.var1" + var1 + " AND groups.var2=" + var2 + " " + 
        " ORDER BY name, subjects.subjectcode, subjects.sID "); 
      while (res.next()) { 
       if (currentId != res.getInt("sID")) { 
        currentData = new CurrentData(); 
        data.subjects.add(currentData); 
        currentData.subjectName = res.getString("name"); 
        currentData.subjectID = res.getInt("sID"); 
       } 
       CurrentGroupData groupData = new CurrentGroupData(); 
       groupData.name = res.getString("gname"); 
       groupData.id = res.getInt("gID"); 
       currentId = res.getInt("sID"); 
       if (res.getBoolean("ismain")) { 
        assert currentData != null; 
        currentData.groupID = res.getInt("gID"); 
       } 
       if (currentData != null) { 
        currentData.groups.add(groupData); 
       } 
      } 

      loadSubjectsData(st, res); 

     } catch (Exception exc) { 
      Log.writeLog(ex); 
     } finally { 
      try { 
       con.close(); 
      } catch (SQLException e) { 
       Log.writeLog(e); 
      } 
     } 
    } 
} 

: 분석기는 다음 파일에 실패 SonarQube는 수중 음파 탐지기 웹 사이트의 튜토리얼을 따르고 있습니다. localhost : 9000을 탐색 할 수 있으며 시작 페이지가 표시됩니다. 다음 명령을 통해 프로젝트를 분석하려고합니다 : sonar-runner. 실패합니다. 내가 로컬로 실행하고 http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Runner

다음을 표시 -X 실행 수중 음파 탐지기 주자 :

> ERROR: Error during Sonar runner execution org.sonar.runner.impl.RunnerException: Unable to execute Sonar at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91) at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75) at java.security.AccessController.doPrivileged(Native Method) at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69) at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50) at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102) at org.sonar.runner.api.Runner.execute(Runner.java:100) at org.sonar.runner.Main.executeTask(Main.java:70) at org.sonar.runner.Main.execute(Main.java:59) at org.sonar.runner.Main.main(Main.java:53) Caused by: org.sonar.squidbridge.api.AnalysisException: SonarQube is unable to analyze file : '/path/to/my/file/MyFile.java' at org.sonar.java.ast.AstScanner.simpleScan(AstScanner.java:114) at org.sonar.java.ast.AstScanner.scan(AstScanner.java:75) at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:122) at org.sonar.java.JavaSquid.scan(JavaSquid.java:115) at org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:91) at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:79) at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:70) at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:122) at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:222) at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93) at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78) at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235) at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:230) at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:223) at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93) at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78) at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:65) at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:52) at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:128) at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93) at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78) at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:171) at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95) at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67) at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87) ... 9 more Caused by: java.lang.NullPointerException at org.sonar.java.checks.AbstractInjectionChecker.isIdentifierDynamicString(AbstractInjectionChecker.java:67) at org.sonar.java.checks.AbstractInjectionChecker.isDynamicString(AbstractInjectionChecker.java:54) at org.sonar.java.checks.AbstractInjectionChecker.isDynamicString(AbstractInjectionChecker.java:49) at org.sonar.java.checks.AbstractInjectionChecker.isDynamicString(AbstractInjectionChecker.java:57) at org.sonar.java.checks.AbstractInjectionChecker.isDynamicString(AbstractInjectionChecker.java:49) at org.sonar.java.checks.AbstractInjectionChecker.isDynamicString(AbstractInjectionChecker.java:57) at org.sonar.java.checks.AbstractInjectionChecker.isDynamicString(AbstractInjectionChecker.java:49) at org.sonar.java.checks.AbstractInjectionChecker.isDynamicString(AbstractInjectionChecker.java:57) at org.sonar.java.checks.SQLInjectionCheck.visitNode(SQLInjectionCheck.java:48) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:95) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113) at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97) at org.sonar.java.ast.visitors.SubscriptionVisitor.scanTree(SubscriptionVisitor.java:73) at org.sonar.java.ast.visitors.SubscriptionVisitor.scanFile(SubscriptionVisitor.java:67) at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:122) at com.sonar.sslr.impl.ast.AstWalker.walkAndVisit(AstWalker.java:67) at org.sonar.java.ast.AstScanner.simpleScan(AstScanner.java:107) ... 38 more >

는 "이국적인"아무 짓도 안 했어요

는 이와 같은 공식 튜토리얼을 따라 갔다. 아이디어가 있으십니까?

감사

+0

어떤 버전의 SonarQube 및 SonarQube Java 플러그인을 사용하고 있습니까? – Mithfindel

+0

SonarQube - 5.0 SonarQube 러너 - 2.4 웹 사이트에는 SonarQube가 Java Plugin이 이미 설치되어 있다고 나와 있습니다. 그래서 Java Plugin 버전이 2.8이라고 가정합니다. Java Plugin 버전을 어떻게 조회합니까? – Timson

+0

이것은 서버 설정 섹션 인 "업데이트 센터"범주에 있습니다. – Mithfindel

답변

-1

나는 해결책을 가지고,하지만 같은 문제에 달려과 수중 음파 탐지기의 웹 사이트에이 참조를 발견, 그것은 같은 문제가 당신이 될 수 있을까?

http://sonarqube.15.x6.nabble.com/NullPointerException-analysing-file-with-SQLInjectionCheck-td5032155.html

+0

스택 오버플로에 오신 것을 환영합니다! 이것이 이론적으로 질문에 대답 할 수 있지만 여기에 답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 바람직합니다 (http://meta.stackoverflow.com/q/8259). – ryanyuyu

+0

나는 그것이 적어도 동일하거나 적어도 관련된 문제라고 생각한다. 아무런 해결책도 보이지 않는다. – Timson

3

(끝으로 스크롤) 나는 ReturnEmptyArrayyNotNullCheck와 유사한 문제가있어. 해결 방법으로 나는 sonarqube web gui에서이 규칙을 비활성화했습니다. 관리자로 로그인하십시오. 상단 메뉴에서 규칙을 클릭하십시오. SQL 또는 Inject 또는 다른 단어를 검색하여 분석 실패의 원인이되는 것으로 생각되는 규칙을 찾으십시오. 그런 다음 규칙을 선택하고 프로젝트에 첨부 된 품질 프로파일에서 규칙을 사용하지 않도록 설정하십시오. 물론이 규칙은 모든 첨부 된 프로젝트에서 완전히 무시됩니다.

관련 문제