001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2012 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.*; 023 import org.sonar.plugins.squid.decorators.*; 024 025 import java.util.Arrays; 026 import java.util.List; 027 028 @Properties({ 029 @Property(key = SquidPluginProperties.SQUID_ANALYSE_ACCESSORS_PROPERTY, 030 defaultValue = SquidPluginProperties.SQUID_ANALYSE_ACCESSORS_DEFAULT_VALUE + "", 031 name = "Separate accessors", 032 description = "Flag whether Squid should separate accessors (getters/setters) from methods. " + 033 "In that case, accessors are not counted in metrics such as complexity or API documentation.", 034 project = true, 035 global = true, 036 category = CoreProperties.CATEGORY_JAVA, 037 type = PropertyType.BOOLEAN), 038 @Property(key = SquidPluginProperties.FIELDS_TO_EXCLUDE_FROM_LCOM4_COMPUTATION, 039 defaultValue = SquidPluginProperties.FIELDS_TO_EXCLUDE_FROM_LCOM4_COMPUTATION_DEFAULT_VALUE, 040 name = "List of fields to exclude from LCOM4 computation", 041 description = "Some fields should not be taken into account when computing LCOM4 measure as they " + 042 "unexpectedly and artificially decrease the LCOM4 measure. " 043 + "The best example is a logger used by all methods of a class. " + 044 "All field names to exclude from LCOM4 computation must be separated by a comma.", 045 project = true, 046 global = true, 047 category = CoreProperties.CATEGORY_JAVA), 048 @Property( 049 key = CoreProperties.DESIGN_SKIP_DESIGN_PROPERTY, 050 defaultValue = "" + CoreProperties.DESIGN_SKIP_DESIGN_DEFAULT_VALUE, 051 name = "Skip design analysis", 052 project = true, 053 global = true, 054 category = CoreProperties.CATEGORY_JAVA, 055 type = PropertyType.BOOLEAN) 056 }) 057 public final class SquidPlugin extends SonarPlugin { 058 059 public List getExtensions() { 060 return Arrays.asList( 061 SquidSensor.class, 062 SquidRuleRepository.class, 063 JavaSourceImporter.class, 064 FileComplexityDistributionDecorator.class, 065 FunctionComplexityDistributionBuilder.class, 066 ClassesDecorator.class, 067 ChidamberKemererDistributionBuilder.class, 068 FunctionsDecorator.class); 069 } 070 071 }