/* * Coverity Sonar Plugin * Copyright (c) 2017 Synopsys, Inc * support@coverity.com * * All rights reserved. This program and the accompanying materials are made * available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html. */ package org.sonar.plugins.coverity.util; import com.coverity.ws.v9.DefectInstanceDataObj; import org.sonar.api.config.Settings; import org.sonar.api.rule.RuleKey; import org.sonar.plugins.coverity.CoverityPlugin; import org.sonar.plugins.coverity.ws.CIMClient; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CoverityUtil { public static RuleKey getRuleKey(String language, String key) { return RuleKey.of(CoverityPlugin.REPOSITORY_KEY + "-" + language, key); } public static String getValue(String tag, Element element) { NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes(); Node node = (Node) nodes.item(0); return node.getNodeValue(); } public static String flattenDefectInstanceCheckerName(DefectInstanceDataObj dido) { return dido.getDomain() + "_" + dido.getCheckerName(); } public static String createURL(CIMClient client) { return createURL(client.getHost(), client.getPort(), client.isUseSSL()); } public static String createURL(Settings settings) { String host = settings.getString(CoverityPlugin.COVERITY_CONNECT_HOSTNAME); int port = settings.getInt(CoverityPlugin.COVERITY_CONNECT_PORT); boolean ssl = settings.getBoolean(CoverityPlugin.COVERITY_CONNECT_SSL); return createURL(host, port, ssl); } public static String createURL(String host, int port, boolean ssl) { if(host == null || port == 0) { return null; } return String.format("http%s://%s:%d/", (ssl ? "s" : ""), host, port); } public static List<File> listFiles(File dir, List<File> listOfFiles){ List<File> tmpList = Arrays.asList(dir.listFiles()); for(File possibleFile : tmpList){ if(possibleFile.isFile()){ listOfFiles.add(possibleFile); } else if (possibleFile.isDirectory()){ listFiles(possibleFile, listOfFiles); } } return listOfFiles; } public static List<File> listFiles(File dir){ if(dir.isFile()){ List<File> tmpList = new ArrayList<File>(); tmpList.add(dir); return tmpList; } else { return listFiles(dir, new ArrayList<File>()); } } }