1.下载sonar安装版,解压;
2.bin\windows-x86-32\StartSonar.bat
3.mvn clean install sonar:sonar
4.Browse to http://localhost:9000, default login/password is admin/admin.
5.mvn org.codehaus.sonar:sonar-maven-plugin:1.8:sonar -Dsonar.skipInstall=true 安装插件,目前这个插件还是1.8版,地址看插件版本
- #--------------------------------------------------------
- # To use an environment variable, use the following syntax : ${env:NAME_OF_ENV_VARIABLE}
- # For example :
- # sonar.jdbc.url: ${env:SONAR_JDBC_URL}
- #---------------------------------------------------------
- #---------------------------------------------------------
- # WEB
- #---------------------------------------------------------
- # Listen host/port and context path (for example / or /sonar). Default values are 0.0.0.0:9000/
- # ONLY IF STANDALONE MODE. NOT USED IF DEPLOYED AS A WAR.
- sonar.web.host: 0.0.0.0
- sonar.web.port: 9000
- sonar.web.context: /sonar
- # Apache mod_jk connector. Supported only in standalone mode.
- # Uncomment to activate AJP13 connector.
- #sonar.ajp13.port: 8009
- #---------------------------------------------------------
- # DATABASE
- #---------------------------------------------------------
- # Comment the 4 following lines to deactivate the default embedded database (used only for tests and demos)
- #sonar.jdbc.url: jdbc:derby://localhost:1527/sonar;create=true
- #sonar.jdbc.driverClassName: org.apache.derby.jdbc.ClientDriver
- #sonar.jdbc.validationQuery: values(1)
- # data directory, autodetected : /data if standalone application, /WEB-INF/classes/data if WAR deployement (exploded mode)
- #sonar.embeddedDatabase.dataDir:
- # MySql
- # uncomment the 3 following lines to use MySQL
- sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
- sonar.jdbc.driverClassName: com.mysql.jdbc.Driver
- sonar.jdbc.validationQuery: select 1
- # Oracle
- # uncomment the 3 following lines to use Oracle
- #sonar.jdbc.url: jdbc:oracle:thin:@localhost/XE
- #sonar.jdbc.driverClassName: oracle.jdbc.driver.OracleDriver
- #sonar.jdbc.validationQuery: select 1 from dual
- # PostgreSQL
- # uncomment the 3 following lines to use PostgreSQL
- #sonar.jdbc.url: jdbc:postgresql://localhost/sonar
- #sonar.jdbc.driverClassName: org.postgresql.Driver
- #sonar.jdbc.validationQuery: select 1
- # generic settings
- sonar.jdbc.username: sonar
- sonar.jdbc.password: sonar
- sonar.jdbc.maxActive: 10
- sonar.jdbc.maxIdle: 5
- sonar.jdbc.minIdle: 2
- sonar.jdbc.maxWait: 5000
- sonar.jdbc.minEvictableIdleTimeMillis: 600000
- sonar.jdbc.timeBetweenEvictionRunsMillis: 30000
- # Transaction isolation level. Default driver setting is used by default.
- # Values : 1 (TRANSACTION_READ_UNCOMMITED), 2 (TRANSACTION_READ_COMMITTED), 4 (TRANSACTION_REPEATABLE_READ), 8 (TRANSACTION_SERIALIZABLE)
- #sonar.jdbc.defaultTransactionIsolation: 2
- # When packaged in a WAR, JDBC datasource can be configured into the application server then registered to JNDI.
- # In such a case Sonar uses this datasource to connect to database, else if binds itself its own datasource.
- # Note : Jonas does not accept to bind subcontexts, so name should be something like 'jdbc-sonar', without slashes.
- #sonar.jdbc.jndiName: jdbc/sonar
- #---------------------------------------------------------
- # EXTENSIONS
- #---------------------------------------------------------
- # Absolute path of coding rules extensions (custom rules that are not provided with tools like Checkstyle or PMD).
- # This parameter is useful when Sonar is deployed as a WAR. It avoids from packaging the WAR file each time extensions JARs are updated.
- # The directory contains subdirectories like checkstyle/ and pmd/
- # Example :
- # sonar.rules.extensionsPath: /user/home/jdoe/sonar/extensions
MVN
- <!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- -->
- <!--
- | This is the configuration file for Maven. It can be specified at two levels:
- |
- | 1. User Level. This settings.xml file provides configuration for a single user,
- | and is normally provided in $HOME/.m2/settings.xml.
- |
- | NOTE: This location can be overridden with the system property:
- |
- | -Dorg.apache.maven.user-settings=/path/to/user/settings.xml
- |
- | 2. Global Level. This settings.xml file provides configuration for all maven
- | users on a machine (assuming they're all using the same maven
- | installation). It's normally provided in
- | ${maven.home}/conf/settings.xml.
- |
- | NOTE: This location can be overridden with the system property:
- |
- | -Dorg.apache.maven.global-settings=/path/to/global/settings.xml
- |
- | The sections in this sample file are intended to give you a running start at
- | getting the most out of your Maven installation. Where appropriate, the default
- | values (values used when the setting is not specified) are provided.
- |
- |-->
- <settings>
- <!-- localRepository
- | The path to the local repository maven will use to store artifacts.
- |
- | Default: ~/.m2/repository -->
- <localRepository>D:/.m2/repository</localRepository>
- <!-- interactiveMode
- | This will determine whether maven prompts you when it needs input. If set to false,
- | maven will use a sensible default value, perhaps based on some other setting, for
- | the parameter in question.
- |
- | Default: true
- <interactiveMode>true</interactiveMode>
- -->
- <!-- offline
- | Determines whether maven should attempt to connect to the network when executing a build.
- | This will have an effect on artifact downloads, artifact deployment, and others.
- |
- | Default: false
- <offline>false</offline>
- -->
- <!-- proxies
- | This is a list of proxies which can be used on this machine to connect to the network.
- | Unless otherwise specified (by system property or command-line switch), the first proxy
- | specification in this list marked as active will be used.
- |-->
- <proxies>
- <!-- proxy
- | Specification for one proxy, to be used in connecting to the network.
- <nonProxyHosts>local.net,some.host.com</nonProxyHosts>
- |-->
- <proxy>
- <id>tnt</id>
- <active>true</active>
- <protocol>http</protocol>
- <username></username>
- <password></password>
- <host>10.168.0.7</host>
- <port>3128</port>
- </proxy>
- </proxies>
- <!-- servers
- | This is a list of authentication profiles, keyed by the server-id used within the system.
- | Authentication profiles can be used whenever maven must make a connection to a remote server.
- |-->
- <servers>
- <!-- server
- | Specifies the authentication information to use when connecting to a particular server, identified by
- | a unique name within the system (referred to by the 'id' attribute below).
- |
- | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
- | used together.
- |
- <server>
- <id>deploymentRepo</id>
- <username>repouser</username>
- <password>repopwd</password>
- </server>
- -->
- <!-- Another sample, using keys to authenticate.
- <server>
- <id>siteServer</id>
- <privateKey>/path/to/private/key</privateKey>
- <passphrase>optional; leave empty if not used.</passphrase>
- </server>
- -->
- </servers>
- <!-- mirrors
- | This is a list of mirrors to be used in downloading artifacts from remote repositories.
- |
- | It works like this: a POM may declare a repository to use in resolving certain artifacts.
- | However, this repository may have problems with heavy traffic at times, so people have mirrored
- | it to several places.
- |
- | That repository definition will have a unique id, so we can create a mirror reference for that
- | repository, to be used as an alternate download site. The mirror site will be the preferred
- | server for that repository.
- |-->
- <mirrors>
- <!-- mirror
- | Specifies a repository mirror site to use instead of a given repository. The repository that
- | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
- | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
- |
- <mirror>
- <id>mirrorId</id>
- <mirrorOf>repositoryId</mirrorOf>
- <name>Human Readable Name for this Mirror.</name>
- <url>http://my.repository.com/repo/path</url>
- </mirror>
- -->
- </mirrors>
- <!-- profiles
- | This is a list of profiles which can be activated in a variety of ways, and which can modify
- | the build process. Profiles provided in the settings.xml are intended to provide local machine-
- | specific paths and repository locations which allow the build to work in the local environment.
- |
- | For example, if you have an integration testing plugin - like cactus - that needs to know where
- | your Tomcat instance is installed, you can provide a variable here such that the variable is
- | dereferenced during the build process to configure the cactus plugin.
- |
- | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
- | section of this document (settings.xml) - will be discussed later. Another way essentially
- | relies on the detection of a system property, either matching a particular value for the property,
- | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
- | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
- | Finally, the list of active profiles can be specified directly from the command line.
- |
- | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
- | repositories, plugin repositories, and free-form properties to be used as configuration
- | variables for plugins in the POM.
- |
- |-->
- <profiles>
- <!-- profile
- | Specifies a set of introductions to the build process, to be activated using one or more of the
- | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
- | or the command line, profiles have to have an ID that is unique.
- |
- | An encouraged best practice for profile identification is to use a consistent naming convention
- | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
- | This will make it more intuitive to understand what the set of introduced profiles is attempting
- | to accomplish, particularly when you only have a list of profile id's for debug.
- |
- | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
- <profile>
- <id>jdk-1.4</id>
- <activation>
- <jdk>1.4</jdk>
- </activation>
- <repositories>
- <repository>
- <id>jdk14</id>
- <name>Repository for JDK 1.4 builds</name>
- <url>http://www.myhost.com/maven/jdk14</url>
- <layout>default</layout>
- <snapshotPolicy>always</snapshotPolicy>
- </repository>
- </repositories>
- </profile>
- -->
- <!--
- | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
- | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
- | might hypothetically look like:
- |
- | ...
- | <plugin>
- | <groupId>org.myco.myplugins</groupId>
- | <artifactId>myplugin</artifactId>
- |
- | <configuration>
- | <tomcatLocation>${tomcatPath}</tomcatLocation>
- | </configuration>
- | </plugin>
- | ...
- |
- | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
- | anything, you could just leave off the <value/> inside the activation-property.
- |
- <profile>
- <id>env-dev</id>
- <activation>
- <property>
- <name>target-env</name>
- <value>dev</value>
- </property>
- </activation>
- <properties>
- <tomcatPath>/path/to/tomcat/instance</tomcatPath>
- </properties>
- </profile>
- -->
- <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.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
- <sonar.jdbc.username>sonar</sonar.jdbc.username>
- <sonar.jdbc.password>sonar</sonar.jdbc.password>
- <!-- SERVER ON A REMOTE HOST 2.1.2中已经变成http://localhost:9000-->
- <sonar.host.url>http://localhost:9000/sonar</sonar.host.url>
- </properties>
- </profile>
- </profiles>
- <!-- activeProfiles
- | List of profiles that are active for all builds.
- |
- <activeProfiles>
- <activeProfile>alwaysActiveProfile</activeProfile>
- <activeProfile>anotherAlwaysActiveProfile</activeProfile>
- </activeProfiles>
- -->
- </settings>
收集数据
maven项目
1。mvn clean install -Dtest=false -DfailIfNoTests=false
2。mvn sonar:sonar or mvn org.codehaus.sonar:sonar-maven-plugin:1.8:sonar
not maven项目
1.建一个pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>eric</groupId>
- <artifactId>mmsitem</artifactId>
- <name>mmsitem</name>
- <version>1</version>
- <build>
- <sourceDirectory>../src</sourceDirectory>
- <outputDirectory>../WebRoot/WEB-INF/classes</outputDirectory>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- <excludes>
- <exclude>**/*.*</exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <properties>
- <sonar.dynamicAnalysis>false</sonar.dynamicAnalysis>
- </properties>
- </project>
2。mvn sonar:sonar or mvn org.codehaus.sonar:sonar-maven-plugin:1.8:sonar