我尝试使用此插件设置SonarQube来分析我的TypeScript项目:https://github.com/Pablissimo/SonarTsPlugin
但是,我遇到了如下错误:
> C:\sonarqube\sonar-runner-2.4\bin\sonar-runner.bat
...
INFO:
------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 3.006s
Final Memory: 18M/613M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must install a plugin that supports the language 'typescript'
ERROR:
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
我的设置: - Windows 7 64位 - JDK8(1.8.0)64位 - SonarQube 5.1 64位
我已从源代码构建了该插件,并将生成的.jar文件复制到C:\sonarqube\sonarqube-5.1\extensions\plugins\sonar-typescript-plugin-0.1-SNAPSHOT.jar
的SonarQube安装中。
SonarQube正在运行并服务于端口9000,我可以在Settings-> System-> UpdateCenter上看到安装了TypeScript插件,语言关键字为typescript
。
基于this post,似乎我必须:
登录您的Sonar实例,点击"设置" > "质量档案"和"创建"在您要使用的语言的标题之上。
查看这些设置,我看到了Typescript Profiles
标题,其中定义了TsLint
个配置文件并设置为默认值。
最后,在我的项目根目录中,我有一个文件sonar-project.properties
# Required metadata
sonar.projectKey=my-ts-project
sonar.projectName=A TypeScript Project
sonar.projectVersion=1.0
# Comma-separated paths to directories with sources (required)
sonar.sources=src
# Language
sonar.language=typescript
# Encoding of the source files
sonar.sourceEncoding=UTF-8
有了所有这些配置,我仍然会收到声纳 - 跑步者错误"你必须安装一个支持该语言的插件"。
我错过了什么?
编辑:
我尝试安装JavaScript插件,我也遇到了同样的问题。所以这并不仅限于TypeScript。我可以针对Java项目运行Sonar,但似乎没有其他语言可以工作。
答案 0 :(得分:13)
好的,我想出了如何解决这个具体问题。我的sonar.language
中的密钥sonar-project.properties
应设置为ts
,而不是typescript
。
# Language
sonar.language=ts
我通过查看与javascript插件相对应的示例项目来解决这个问题:https://github.com/SonarSource/sonar-examples/blob/master/projects/languages/javascript/javascript-sonar-runner/sonar-project.properties。此处,语言设置为js
而不是javascript
。
我必须猜测,一般来说,语言键应该设置为源文件的正常文件扩展名?即Java - > .java,JavaScript - > .js,TypeScript - > .ts ......如果是这样的话,这一点并不明显。有没有办法确认这种预感?
答案 1 :(得分:4)
以下是可能的sonar.language值
import javax.ws.rs.core.GenericEntity;
...
public class NoteService {
NoteDataAccess theNoteDataAccess = new NoteDataAccess();
@GET
@Path("/notes")
@Produces(MediaType.APPLICATION_XML)
public Response getNotes(){
List<Note> notes = theNoteDataAccess.getAllNotes();
GenericEntity<List<Note>> entity = new GenericEntity<List<Note>>(Lists.newArrayList(notes)) {};
return Response.ok().entity(entity).build();
}
安装所需的插件并使用-X开关运行扫描仪,您可以在声纳日志中找到必要的值。