
前言
想成为一名优秀的工程师,代码质量一定要过关!
前提
安装最新版的 Docker !
开始搭建
1、获取 postgresql 的镜像
$ docker pull postgres
2、启动 postgresql
$ docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
3、获取 sonarqube 的镜像
$ docker pull sonarqube
4、启动 sonarqube
$ docker run --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -p 9000:9000 -d sonarqube
至此,平台搭建完毕。
代码质量检验
1、打开 http://localhost:9000/ , 点击 "Log in"

登录账号:admin 密码:admin
2、以 Maven 项目为例,此处有一个 security-oauth2-qq
项目:

3、执行命令,检测代码质量
$ mvn sonar:sonar
4、成功之后,返回到浏览器,就可以浏览自己的项目的代码质量了



总结
目前码云上代码分析工具首推的也是 sonarqube,支持各种语言的程序检测,使用简单方便,感觉非常适合微服务的代码评审,强烈推荐。

网友评论
2018.04.04 08:44:36 WARN app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit
value [es]: 137
2018.04.04 08:44:36 INFO app[][o.s.a.SchedulerImpl] Process [es] is
stopped
2018.04.04 08:44:36 INFO web[][o.s.s.q.RegisterQualityProfiles] Update profile cs/Sonar
way
2018.04.04 08:44:36 WARN app[][o.e.t.n.Netty4Transport] write and flush on the network layer failed (channel: [id: 0xa58e8412, L:0.0.0.0/0.0.0.0:35518 ! R:/127.0.0.1:9001])
java.nio.channels.ClosedChannelException: null
at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
2018.04.04 08:44:36 WARN app[][o.e.t.n.Netty4Transport] write and flush on the network layer failed (channel: [id: 0xf7ea3ce2, L:0.0.0.0/0.0.0.0:35520 ! R:/127.0.0.1:9001])
java.nio.channels.ClosedChannelException: null
at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
2018.04.04 08:44:36 WARN app[][o.e.t.n.Netty4Transport] write and flush on the network layer failed (channel: [id: 0xd1c0075a, L:0.0.0.0/0.0.0.0:35522 ! R:/127.0.0.1:9001])
java.nio.channels.ClosedChannelException: null
at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
2018.04.04 08:44:36 WARN app[][o.e.t.n.Netty4Transport] write and flush on the network layer failed (channel: [id: 0x67c8ecab, L:0.0.0.0/0.0.0.0:35524 ! R:/127.0.0.1:9001])
java.nio.channels.ClosedChannelException: null
at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
2018.04.04 08:44:36 WARN app[][o.e.t.n.Netty4Transport] write and flush on the network layer failed (channel: [id: 0x7c6e5e9f, L:0.0.0.0/0.0.0.0:35526 ! R:/127.0.0.1:9001])
java.nio.channels.ClosedChannelException: null
--------------------------------
version: "3.3"
services:
sonarqube6.7:
image: jamesz2011/sonarqube6.7:latest
container_name: sonarqube
ports:
- "9000:9000"
- "9092:9092"
volumes:
- /etc/localtime:/etc/localtime:ro
links:
- db
environment:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
db:
image: postgres
container_name: postgres
ports:
- "5432:5432"
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
sonarqube2 | at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:475)
sonarqube2 | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)
sonarqube2 | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
sonarqube2 | at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
sonarqube2 | at org.postgresql.Driver.makeConnection(Driver.java:452)
sonarqube2 | at org.postgresql.Driver.connect(Driver.java:254)
sonarqube2 | at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
sonarqube2 | at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
sonarqube2 | at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
sonarqube2 | at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
sonarqube2 | ... 34 common frames omitted