Analises de codigo de prjetos OpenJDK
Os passos abaixo servem de grande ajuda para entender mais profundamente a estrutura do projeto
Usando IntelliJ
Execute sua análise da OpenJDK dentro do IntelliJ usando o Code analysis: https://web.archive.org/web/20160623200432/https://java.net/projects/adoptopenjdk/pages/JavaSourcesWithIntellij
Usando SonarQube
Depois de executar os passos abaixo, a seguinte dashboard será criada:
Nos vamos configurar 3 passos" - SonarQube:
- A base de dados (para guardar os resultados);
- o web server (para display e configurar o sonarqube);
- Os analyzers (Que analizam codigo).
Em seguida nos vamos executar o SonarQube analysis codebase, e criar filtros customizados no SonarQube para mostrar um dashboard por versão do OpenJDK.
- Project Nemo: JDK7 SonarQube analysis dashboard
- OpenJDK 8 SonarQube steps
- OpenJDK 9 SonarQube steps
- OpenJDK SonarQube Dashboard steps
Problemas conhecidos: nas últimas versões do SonarQube, os projetos não estavam visiveis em nenhum dos widgets, apos executar a análise - estes problemas estão sendo investigados, mas fique a vontade em nos comunicar caso encontre a solução antes.
Instale o SonarQube no Mac OS
Use este blog para instalar o SonarQube (Mac OS pode precisar de ajustes especificos)
Instale MySQL e SonarQube no Ubuntu VM
Download e instale MySQL no Ubuntu. Busque por "Installation" em https://help.ubuntu.com/lts/serverguide/mysql.html
No MySQL, crie a database e user - https://web.archive.org/web/20140604201833/https://github.com/SonarSource/sonar-examples/blob/master/scripts/database/mysql/create_database.sql
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; Query OK, 0 rows affected (0.01 sec) mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar'; Query OK, 0 rows affected (0.01 sec) mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; Query OK, 0 rows affected (0.01 sec) mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec)
Baixe o SonarQube and SonarQube Runner http://www.sonarqube.org/downloads/. Asumindo que a instalação do SonarQube e SonarQube Runner será em
/opt/sonarqube-4.5.1
e/opt/sonar-runner-2.4
respectivamente.Configure o SonarQube para usar o MySQL database e ignorar o default in-memory em
/opt/sonarqube-4.5.1/conf/sonar.properties
Descomente as linhas abaixo:
sonar.jdbc.username=sonar sonar.jdbc.password=sonar . . . sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance . . . sonar.web.host=127.0.0.1 sonar.web.context=/sonar sonar.web.port=9000
- Inicie o SonarQube e veja a default dashboard
$ cd /opt/sonarqube-4.5.1/bin/linux-x86-64 $ sudo ./sonar.sh start enter password for your user. In this case, j1a2v3a4
Configure o SonarQube Runner, que será usado para analisar os projetos.
$ vi /opt/sonar-runner-2.4/conf/sonar-runner.properties sonar.host.url=http://localhost:9000/sonar sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 sonar.jdbc.username=sonar sonar.jdbc.password=sonar sonar.sourceEncoding=UTF-8
Maven também será usado para analisarsr o jaxp.
Instale Maven se não estiver instalado.
- Download Maven http://maven.apache.org/download.cgi
- Siga os passos de instalação "Unix-based operating Systems."
- Também exporte MAVEN_OPTS environment variable - Requerida para analisar o jdk project; caso contrário, o Sonar reclama por não ter memoria suficiente para analisar o jdk.
Configure o Maven settings com os detalhes do SonarQube no profile - http://docs.codehaus.org/display/SONAR/Installing+and+Configuring+Maven
$ vi /opt/maven-3.0.5/conf/setting.xml <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- Example for MySQL--> <sonar.jdbc.url> jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 </sonar.jdbc.url> <sonar.jdbc.username>sonar</sonar.jdbc.username> <sonar.jdbc.password>sonar</sonar.jdbc.password> <!-- using the default value of http://localhost:9000 does not work. The context root, '/sonar' is required. --> <sonar.host.url>http://localhost:9000/sonar</sonar.host.url> </properties> </profile>
Inicie SonarQube e abra o link http://localhost:9000/sonar verificando que o SonarQube esta iniciado corretamente com uma dashboard vazia.
$ /opt/sonarqube-4.5.1/bin/linux-x86-64/sonar.sh start (path may differ)
- Abra http://localhost:9000/sonar
Nota: Se /opt/sonarqube-4.5.1/conf/sonar-properties
contiver na seção “web server” sonar.web.context, então /opt/sonar-runner-2.4/conf/sonar.properties
deve estar setado sonar.host.url=http://localhost:9000/sonar
Caso contrário, quando o SonarQube iniciar e tentar chamar o sonarqube API na URL http://localhost:9000, não haverá resposta e o SonarQube não iniciará corretamente.
Exemplo visual do SonarQube
(note: repositório jdk não incluso; jitwatch incluso; zoom para ver os nomes;)