001    /*
002     * Sonar, open source software quality management tool.
003     * Copyright (C) 2009 SonarSource SA
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.java.recognizer;
021    
022    import java.util.HashSet;
023    import java.util.Set;
024    
025    import org.sonar.squid.recognizer.CamelCaseDetector;
026    import org.sonar.squid.recognizer.ContainsDetector;
027    import org.sonar.squid.recognizer.Detector;
028    import org.sonar.squid.recognizer.EndWithDetector;
029    import org.sonar.squid.recognizer.KeywordsDetector;
030    import org.sonar.squid.recognizer.LanguageFootprint;
031    
032    public class JavaFootprint implements LanguageFootprint {
033    
034      private final Set<Detector> detectors = new HashSet<Detector>();
035    
036      public JavaFootprint() {
037        detectors.add(new EndWithDetector(0.95, '}', ';', '{'));
038        detectors.add(new KeywordsDetector(0.7, "||", "&&"));
039        detectors.add(new KeywordsDetector(0.3, "public", "abstract", "class", "implements", "extends", "return", "throw", "private",
040            "protected", "enum", "continue", "assert", "package", "synchronized", "boolean", "this", "double", "instanceof", "final",
041            "interface", "static", "void", "long", "int", "float", "super", "true", "case:"));
042        detectors.add(new ContainsDetector(0.95, "++", "for(", "if(", "while(", "catch(", "switch(", "try{", "else{"));
043        detectors.add(new CamelCaseDetector(0.5));
044      }
045    
046      public Set<Detector> getDetectors() {
047        return detectors;
048      }
049    }