001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2011 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020 package org.sonar.plugins.squid; 021 022 import org.sonar.api.CoreProperties; 023 import org.sonar.api.Properties; 024 import org.sonar.api.Property; 025 import org.sonar.api.SonarPlugin; 026 import org.sonar.plugins.squid.decorators.*; 027 028 import java.util.Arrays; 029 import java.util.List; 030 031 @Properties({ 032 @Property(key = SquidPluginProperties.SQUID_ANALYSE_ACCESSORS_PROPERTY, 033 defaultValue = SquidPluginProperties.SQUID_ANALYSE_ACCESSORS_DEFAULT_VALUE 034 + "", 035 name = "Separate accessors", 036 description = "Flag whether Squid should separate accessors (getters/setters) from methods. " + 037 "In that case, accessors are not counted in metrics such as complexity or API documentation.", 038 project = true, 039 global = true, 040 category = CoreProperties.CATEGORY_JAVA), 041 @Property(key = SquidPluginProperties.FIELDS_TO_EXCLUDE_FROM_LCOM4_COMPUTATION, 042 defaultValue = SquidPluginProperties.FIELDS_TO_EXCLUDE_FROM_LCOM4_COMPUTATION_DEFAULT_VALUE, 043 name = "List of fields to exclude from LCOM4 computation", 044 description = "Some fields should not be taken into account when computing LCOM4 measure as they " + 045 "unexpectedly and artificially decrease the LCOM4 measure. " 046 + "The best example is a logger used by all methods of a class. " + 047 "All field names to exclude from LCOM4 computation must be separated by a comma.", 048 project = true, 049 global = true, 050 category = CoreProperties.CATEGORY_JAVA), 051 @Property( 052 key = CoreProperties.DESIGN_SKIP_DESIGN_PROPERTY, 053 defaultValue = "" + CoreProperties.DESIGN_SKIP_DESIGN_DEFAULT_VALUE, 054 name = "Skip design analysis", 055 project = true, 056 global = true, 057 category = CoreProperties.CATEGORY_JAVA) 058 }) 059 public final class SquidPlugin extends SonarPlugin { 060 061 public List getExtensions() { 062 return Arrays.asList(SquidSensor.class, SquidRuleRepository.class, JavaSourceImporter.class, 063 ClassComplexityDistributionBuilder.class, FunctionComplexityDistributionBuilder.class, ClassesDecorator.class, 064 ChidamberKemererDistributionBuilder.class, FunctionsDecorator.class); 065 } 066 067 }