From f51df24fe449163d27333e80c6a135982553d254 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Fri, 12 Jul 2024 13:21:19 +0800 Subject: [PATCH 01/25] =?UTF-8?q?=E7=BC=96=E5=86=99=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=20=E5=BF=AB=E9=80=9F=E5=AE=89=E8=A3=85bishen?= =?UTF-8?q?gJKD=E5=92=8C=E6=B7=BB=E5=8A=A0=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + ci/maven3/settings.xml | 35 +- .../devkit/code/inspector/CodeInspector.java | 23 + .../code/inspector/dao/DataBaseMapper.java | 15 + .../dao/RuleViolationInfoMapper.java | 19 + .../inspector/entity/RuleViolationInfo.java | 29 + .../inspector/listener/DataBaseListener.java | 79 +++ .../inspector/perload/DataBasePreLoad.java | 44 ++ .../code/inspector/utils/PropertiesUtils.java | 44 ++ .../inspector/wrappers/CheckStyleWrapper.java | 593 ++++++++++++++++++ .../src/main/resources/config.properties | 4 + .../src/main/resources/log4j2.xml | 22 + .../main/resources/mappers/DataBaseMapper.xml | 27 + .../mappers/RuleViolationInfoMapper.xml | 22 + .../src/main/resources/mybatis-config.xml | 21 + .../code/inspector/CodeInspectorTest.java | 10 + 16 files changed, 955 insertions(+), 33 deletions(-) create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java create mode 100644 component/CoceInspector/code_inspector/src/main/resources/config.properties create mode 100644 component/CoceInspector/code_inspector/src/main/resources/log4j2.xml create mode 100644 component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml create mode 100644 component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml create mode 100644 component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml create mode 100644 component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java diff --git a/.gitignore b/.gitignore index 7a28623..76f27ae 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ build .venv __pycache__ devkitdependencies +.gradle component/DevKitTester/devkit_tester/config/log.ini component/DevKitTester/devkit_tester/config/devkit_distribute.yaml diff --git a/ci/maven3/settings.xml b/ci/maven3/settings.xml index 9b916d3..66617be 100644 --- a/ci/maven3/settings.xml +++ b/ci/maven3/settings.xml @@ -19,30 +19,6 @@ specific language governing permissions and limitations under the License. --> - @@ -158,16 +134,9 @@ under the License. --> - maven-default-http-blocker - external:http:* - Pseudo repository to mirror external repositories initially using HTTP. - http://0.0.0.0/ - true - - - jboss + huaweicloud * - https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/ + https://mirrors.huaweicloud.com/repository/maven/ diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java new file mode 100644 index 0000000..0e1863c --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -0,0 +1,23 @@ +package com.huawei.devkit.code.inspector; + +import com.huawei.devkit.code.inspector.perload.DataBasePreLoad; +import com.huawei.devkit.code.inspector.utils.PropertiesUtils; +import com.huawei.devkit.code.inspector.wrappers.CheckStyleWrapper; + +import java.io.IOException; +import java.util.Properties; + +public class CodeInspector { + + public static void main(String[] args) { + try { + Properties properties = PropertiesUtils.loadProperties("config.properties"); + PropertiesUtils.configAndUpdate(properties); + DataBasePreLoad.preload(properties); + CheckStyleWrapper.main(args); + } catch (IOException ex) { + ex.printStackTrace(); + } + + } +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java new file mode 100644 index 0000000..ff685c5 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.dao; + +/** + * DataBaseMapper + * + * @since 2024-07-11 + */ +public interface DataBaseMapper { + void createTable(); + +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java new file mode 100644 index 0000000..e0a8a58 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.dao; + +import com.huawei.devkit.code.inspector.entity.RuleViolationInfo; + +import java.util.List; + +/** + * RuleViolationInfoMapper + * + * @since 2024-07-11 + */ +public interface RuleViolationInfoMapper { + + int addRuleViolationInfos(List infoList); +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java new file mode 100644 index 0000000..1cd54dc --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.entity; + +import lombok.Builder; +import lombok.Data; + +/** + * RuleViolationInfo + * + * @since 2024-07-11 + */ +@Data +@Builder +public class RuleViolationInfo { + private int id; + private String ruleId; + private int filePathHash; + private String filePath; + private String line; + private int lineno; + private String message; + private String mergeId; + private boolean shielded; + private boolean commitRequestToShield; + private long time; +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java new file mode 100644 index 0000000..768c873 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.listener; + +import com.google.common.io.Files; +import com.huawei.devkit.code.inspector.entity.RuleViolationInfo; +import com.puppycrawl.tools.checkstyle.api.AuditEvent; +import com.puppycrawl.tools.checkstyle.api.AuditListener; +import lombok.extern.log4j.Log4j2; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * DataBaseListener + * + * @since 2024-07-11 + */ +@Log4j2 +public class DataBaseListener implements AuditListener { + private final String mergeId; + private List infoList; + + public DataBaseListener(String mergeId) { + this.infoList = new ArrayList<>(); + this.mergeId = mergeId; + } + + @Override + public void auditStarted(AuditEvent event) { + + } + + @Override + public void auditFinished(AuditEvent event) { + long time = System.currentTimeMillis(); + + } + + @Override + public void fileStarted(AuditEvent event) { + + } + + @Override + public void fileFinished(AuditEvent event) { + + } + + @Override + public void addError(AuditEvent event) { + RuleViolationInfo ruleViolation = RuleViolationInfo.builder().filePath(event.getFileName()) + .lineno(event.getLine()) + .message(event.getMessage()).ruleId(event.getViolation().getModuleId()) + .mergeId(this.mergeId).shielded(false).commitRequestToShield(false).build(); + this.infoList.add(ruleViolation); + } + + @Override + public void addException(AuditEvent event, Throwable throwable) { + + } + + private void filledLine(String file, List infoList) { + try { + List lines = Files.readLines(new File(file), StandardCharsets.UTF_8); + for (RuleViolationInfo info : infoList) { + info.setLine(lines.get(info.getLineno())); + } + } catch (IOException ex) { + log.error("filled line", ex); + } + } +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java new file mode 100644 index 0000000..b452c5a --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.perload; + +import com.huawei.devkit.code.inspector.dao.DataBaseMapper; +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +/** + * DataBasePreLoad + * + * @since 2024-07-11 + */ +public class DataBasePreLoad { + public static SqlSession getSqlSession() { + return sqlSessionFactory.openSession(); + } + + public static void preload(Properties properties) throws IOException { + try (InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");) { + sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, properties); + } + try (SqlSession sqlSession = sqlSessionFactory.openSession()) { + createTable(sqlSession); + } + } + + private static void createTable(SqlSession sqlSession) { + DataBaseMapper mapper = sqlSession.getMapper(DataBaseMapper.class); + mapper.createTable(); + sqlSession.commit(); + } + + + private static SqlSessionFactory sqlSessionFactory; +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java new file mode 100644 index 0000000..ff0e25a --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.utils; + +import lombok.extern.log4j.Log4j2; +import org.apache.ibatis.io.Resources; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +/** + * PropertiesUtils + * + * @since 2024-07-11 + */ +@Log4j2 +public class PropertiesUtils { + + public static String ROOT_DIR; + + public static Properties loadProperties(String propertiesFile) { + Properties properties = new Properties(); + try (InputStream in = Resources.getResourceAsStream(propertiesFile)) { + properties.load(in); + } catch (IOException ex) { + log.error("load properties", ex); + } + return properties; + } + + public static void configAndUpdate(Properties properties) { + String mode = properties.getProperty("mode"); + if ("dev".equals(mode)) { + ROOT_DIR = properties.getProperty("root.dir"); + } else { + ROOT_DIR = System.getProperty("user.dir"); + properties.setProperty("root.dir", ROOT_DIR); + } + } + +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java new file mode 100644 index 0000000..7212ed1 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -0,0 +1,593 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.wrappers; + +import com.puppycrawl.tools.checkstyle.AbstractAutomaticBean; +import com.puppycrawl.tools.checkstyle.Checker; +import com.puppycrawl.tools.checkstyle.ConfigurationLoader; +import com.puppycrawl.tools.checkstyle.DefaultConfiguration; +import com.puppycrawl.tools.checkstyle.DefaultLogger; +import com.puppycrawl.tools.checkstyle.Definitions; +import com.puppycrawl.tools.checkstyle.LocalizedMessage; +import com.puppycrawl.tools.checkstyle.Main; +import com.puppycrawl.tools.checkstyle.ModuleFactory; +import com.puppycrawl.tools.checkstyle.PackageObjectFactory; +import com.puppycrawl.tools.checkstyle.PropertiesExpander; +import com.puppycrawl.tools.checkstyle.SarifLogger; +import com.puppycrawl.tools.checkstyle.ThreadModeSettings; +import com.puppycrawl.tools.checkstyle.XMLLogger; +import com.puppycrawl.tools.checkstyle.XpathFileGeneratorAstFilter; +import com.puppycrawl.tools.checkstyle.XpathFileGeneratorAuditListener; +import com.puppycrawl.tools.checkstyle.api.AuditEvent; +import com.puppycrawl.tools.checkstyle.api.AuditListener; +import com.puppycrawl.tools.checkstyle.api.CheckstyleException; +import com.puppycrawl.tools.checkstyle.api.Configuration; +import com.puppycrawl.tools.checkstyle.api.RootModule; +import com.puppycrawl.tools.checkstyle.utils.ChainedPropertyUtil; +import com.puppycrawl.tools.checkstyle.utils.CommonUtil; +import picocli.CommandLine; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Properties; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * CheckStyleWrapper + * + * @since 2024-07-11 + */ +public class CheckStyleWrapper { + + /** + * A key pointing to the error counter + * message in the "messages.properties" file. + */ + public static final String ERROR_COUNTER = "Main.errorCounter"; + /** + * A key pointing to the load properties exception + * message in the "messages.properties" file. + */ + public static final String LOAD_PROPERTIES_EXCEPTION = "Main.loadProperties"; + + private static final int EXIT_WITH_INVALID_USER_INPUT_CODE = -1; + private static final int EXIT_WITH_CHECKSTYLE_EXCEPTION_CODE = -2; + + + /** + * Loops over the files specified checking them for errors. The exit code + * is the number of errors found in all the files. + * + * @param args the command line arguments. + * @throws IOException if there is a problem with files access + * @noinspection UseOfSystemOutOrSystemErr, CallToPrintStackTrace, CallToSystemExit + * @noinspectionreason UseOfSystemOutOrSystemErr - driver class for Checkstyle requires + * usage of System.out and System.err + * @noinspectionreason CallToPrintStackTrace - driver class for Checkstyle must be able to + * show all details in case of failure + * @noinspectionreason CallToSystemExit - driver class must call exit + **/ + public static void main(String... args) throws IOException { + + final CliOptions cliOptions = new CliOptions(); + final CommandLine commandLine = new CommandLine(cliOptions); + commandLine.setUsageHelpWidth(CliOptions.HELP_WIDTH); + commandLine.setCaseInsensitiveEnumValuesAllowed(true); + + int exitStatus = 0; + int errorCounter = 0; + try { + commandLine.parseArgs(args); + final List filesToProcess = getFilesToProcess(cliOptions); + errorCounter = runCheckstyle(cliOptions, filesToProcess); + } catch (CommandLine.ParameterException ex) { + exitStatus = EXIT_WITH_INVALID_USER_INPUT_CODE; + System.err.println(ex.getMessage()); + System.err.println("Usage: checkstyle [OPTIONS]... FILES..."); + System.err.println("Try 'checkstyle --help' for more information."); + } catch (CheckstyleException ex) { + exitStatus = EXIT_WITH_CHECKSTYLE_EXCEPTION_CODE; + errorCounter = 1; + ex.printStackTrace(); + } finally { + // return exit code base on validation of Checker + if (errorCounter > 0) { + final LocalizedMessage errorCounterViolation = new LocalizedMessage( + Definitions.CHECKSTYLE_BUNDLE, Main.class, + ERROR_COUNTER, String.valueOf(errorCounter)); + // print error count statistic to error output stream, + // output stream might be used by validation report content + System.err.println(errorCounterViolation.getMessage()); + } + } + } + + /** + * Determines the files to process. + * + * @param options the user-specified options + * @return list of files to process + */ + private static List getFilesToProcess(CliOptions options) { + final List patternsToExclude = options.getExclusions(); + + final List result = new LinkedList<>(); + for (File file : options.files) { + result.addAll(listFiles(file, patternsToExclude)); + } + return result; + } + + /** + * Traverses a specified node looking for files to check. Found files are added to + * a specified list. Subdirectories are also traversed. + * + * @param node the node to process + * @param patternsToExclude The list of patterns to exclude from searching or being added as + * files. + * @return found files + */ + private static List listFiles(File node, List patternsToExclude) { + // could be replaced with org.apache.commons.io.FileUtils.list() method + // if only we add commons-io library + final List result = new LinkedList<>(); + + if (node.canRead() && !isPathExcluded(node.getAbsolutePath(), patternsToExclude)) { + if (node.isDirectory()) { + final File[] files = node.listFiles(); + // listFiles() can return null, so we need to check it + if (files != null) { + for (File element : files) { + result.addAll(listFiles(element, patternsToExclude)); + } + } + } else if (node.isFile()) { + result.add(node); + } + } + return result; + } + + /** + * Checks if a directory/file {@code path} should be excluded based on if it matches one of the + * patterns supplied. + * + * @param path The path of the directory/file to check + * @param patternsToExclude The collection of patterns to exclude from searching + * or being added as files. + * @return True if the directory/file matches one of the patterns. + */ + private static boolean isPathExcluded(String path, Iterable patternsToExclude) { + boolean result = false; + + for (Pattern pattern : patternsToExclude) { + if (pattern.matcher(path).find()) { + result = true; + break; + } + } + + return result; + } + + + /** + * Executes required Checkstyle actions based on passed parameters. + * + * @param options user-specified options + * @param filesToProcess the list of files whose style to check + * @return number of violations of ERROR level + * @throws IOException when output file could not be found + * @throws CheckstyleException when properties file could not be loaded + */ + private static int runCheckstyle(CliOptions options, List filesToProcess) + throws CheckstyleException, IOException { + // setup the properties + final Properties props; + + if (options.propertiesFile == null) { + props = System.getProperties(); + } else { + props = loadProperties(options.propertiesFile); + } + + // create a configuration + final ThreadModeSettings multiThreadModeSettings = + new ThreadModeSettings(CliOptions.CHECKER_THREADS_NUMBER, + CliOptions.TREE_WALKER_THREADS_NUMBER); + + final ConfigurationLoader.IgnoredModulesOptions ignoredModulesOptions; + if (options.executeIgnoredModules) { + ignoredModulesOptions = ConfigurationLoader.IgnoredModulesOptions.EXECUTE; + } else { + ignoredModulesOptions = ConfigurationLoader.IgnoredModulesOptions.OMIT; + } + + final Configuration config = ConfigurationLoader.loadConfiguration( + options.configurationFile, new PropertiesExpander(props), + ignoredModulesOptions, multiThreadModeSettings); + + // create RootModule object and run it + final int errorCounter; + final ClassLoader moduleClassLoader = Checker.class.getClassLoader(); + final RootModule rootModule = getRootModule(config.getName(), moduleClassLoader); + + try { + final AuditListener listener; + if (options.generateXpathSuppressionsFile) { + // create filter to print generated xpath suppressions file + final Configuration treeWalkerConfig = getTreeWalkerConfig(config); + if (treeWalkerConfig != null) { + final DefaultConfiguration moduleConfig = + new DefaultConfiguration( + XpathFileGeneratorAstFilter.class.getName()); + moduleConfig.addProperty(CliOptions.ATTRIB_TAB_WIDTH_NAME, + String.valueOf(options.tabWidth)); + ((DefaultConfiguration) treeWalkerConfig).addChild(moduleConfig); + } + + listener = new XpathFileGeneratorAuditListener(getOutputStream(options.outputPath), + getOutputStreamOptions(options.outputPath)); + } else { + listener = createListener(options.format, options.outputPath); + } + + rootModule.setModuleClassLoader(moduleClassLoader); + rootModule.configure(config); + rootModule.addListener(listener); + + // run RootModule + errorCounter = rootModule.process(filesToProcess); + } finally { + rootModule.destroy(); + } + + return errorCounter; + } + + /** + * Loads properties from a File. + * + * @param file the properties file + * @return the properties in file + * @throws CheckstyleException when could not load properties file + */ + private static Properties loadProperties(File file) + throws CheckstyleException { + final Properties properties = new Properties(); + + try (InputStream stream = Files.newInputStream(file.toPath())) { + properties.load(stream); + } catch (final IOException ex) { + final LocalizedMessage loadPropertiesExceptionMessage = new LocalizedMessage( + Definitions.CHECKSTYLE_BUNDLE, CheckStyleWrapper.class, + LOAD_PROPERTIES_EXCEPTION, file.getAbsolutePath()); + throw new CheckstyleException(loadPropertiesExceptionMessage.getMessage(), ex); + } + + return ChainedPropertyUtil.getResolvedProperties(properties); + } + + /** + * Creates a new instance of the root module that will control and run + * Checkstyle. + * + * @param name The name of the module. This will either be a short name that + * will have to be found or the complete package name. + * @param moduleClassLoader Class loader used to load the root module. + * @return The new instance of the root module. + * @throws CheckstyleException if no module can be instantiated from name + */ + private static RootModule getRootModule(String name, ClassLoader moduleClassLoader) + throws CheckstyleException { + final ModuleFactory factory = new PackageObjectFactory( + Checker.class.getPackage().getName(), moduleClassLoader); + + return (RootModule) factory.createModule(name); + } + + /** + * Returns {@code TreeWalker} module configuration. + * + * @param config The configuration object. + * @return The {@code TreeWalker} module configuration. + */ + private static Configuration getTreeWalkerConfig(Configuration config) { + Configuration result = null; + + final Configuration[] children = config.getChildren(); + for (Configuration child : children) { + if ("TreeWalker".equals(child.getName())) { + result = child; + break; + } + } + return result; + } + + /** + * This method creates in AuditListener an open stream for validation data, it must be + * closed by {@link RootModule} (default implementation is {@link Checker}) by calling + * {@link AuditListener#auditFinished(AuditEvent)}. + * + * @param format format of the audit listener + * @param outputLocation the location of output + * @return a fresh new {@code AuditListener} + * @throws IOException when provided output location is not found + */ + private static AuditListener createListener(OutputFormat format, Path outputLocation) + throws IOException { + final OutputStream out = getOutputStream(outputLocation); + final AbstractAutomaticBean.OutputStreamOptions closeOutputStreamOption = + getOutputStreamOptions(outputLocation); + return format.createListener(out, closeOutputStreamOption); + } + + /** + * Create output stream or return System.out. + * + * @param outputPath output location + * @return output stream + * @throws IOException might happen + * @noinspection UseOfSystemOutOrSystemErr + * @noinspectionreason UseOfSystemOutOrSystemErr - driver class for Checkstyle requires + * usage of System.out and System.err + */ + @SuppressWarnings("resource") + private static OutputStream getOutputStream(Path outputPath) throws IOException { + final OutputStream result; + if (outputPath == null) { + result = System.out; + } else { + result = Files.newOutputStream(outputPath); + } + return result; + } + + /** + * Create {@link AbstractAutomaticBean.OutputStreamOptions} for the given location. + * + * @param outputPath output location + * @return output stream options + */ + private static AbstractAutomaticBean.OutputStreamOptions getOutputStreamOptions(Path outputPath) { + final AbstractAutomaticBean.OutputStreamOptions result; + if (outputPath == null) { + result = AbstractAutomaticBean.OutputStreamOptions.NONE; + } else { + result = AbstractAutomaticBean.OutputStreamOptions.CLOSE; + } + return result; + } + + /** + * Enumeration over the possible output formats. + * + * @noinspection PackageVisibleInnerClass + * @noinspectionreason PackageVisibleInnerClass - we keep this enum package visible for tests + */ + enum OutputFormat { + /** + * XML output format. + */ + XML, + /** + * SARIF output format. + */ + SARIF, + /** + * Plain output format. + */ + PLAIN; + + /** + * Returns a new AuditListener for this OutputFormat. + * + * @param out the output stream + * @param options the output stream options + * @return a new AuditListener for this OutputFormat + * @throws IOException if there is any IO exception during logger initialization + */ + public AuditListener createListener( + OutputStream out, + AbstractAutomaticBean.OutputStreamOptions options) throws IOException { + final AuditListener result; + if (this == XML) { + result = new XMLLogger(out, options); + } else if (this == SARIF) { + result = new SarifLogger(out, options); + } else { + result = new DefaultLogger(out, options); + } + return result; + } + + /** + * Returns the name in lowercase. + * + * @return the enum name in lowercase + */ + @Override + public String toString() { + return name().toLowerCase(Locale.ROOT); + } + } + + /** + * Command line options. + * + * @noinspection unused, FieldMayBeFinal, CanBeFinal, + * MismatchedQueryAndUpdateOfCollection, LocalCanBeFinal + * @noinspectionreason FieldMayBeFinal - usage of picocli requires + * suppression of above inspections + * @noinspectionreason CanBeFinal - usage of picocli requires + * suppression of above inspections + * @noinspectionreason MismatchedQueryAndUpdateOfCollection - list of files is gathered and used + * via reflection by picocli library + * @noinspectionreason LocalCanBeFinal - usage of picocli requires + * suppression of above inspections + */ + @CommandLine.Command(name = "checkstyle", description = "Checkstyle verifies that the specified " + + "source code files adhere to the specified rules. By default, violations are " + + "reported to standard out in plain format. Checkstyle requires a configuration " + + "XML file that configures the checks to apply.", + mixinStandardHelpOptions = true) + private static final class CliOptions { + + /** + * Width of CLI help option. + */ + private static final int HELP_WIDTH = 100; + + /** + * The default number of threads to use for checker and the tree walker. + */ + private static final int DEFAULT_THREAD_COUNT = 1; + + /** + * Name for the moduleConfig attribute 'tabWidth'. + */ + private static final String ATTRIB_TAB_WIDTH_NAME = "tabWidth"; + + /** + * Default output format. + */ + private static final OutputFormat DEFAULT_OUTPUT_FORMAT = OutputFormat.PLAIN; + + /** + * Option name for output format. + */ + private static final String OUTPUT_FORMAT_OPTION = "-f"; + + /** + * The checker threads number. + * This option has been skipped for CLI options intentionally. + */ + private static final int CHECKER_THREADS_NUMBER = DEFAULT_THREAD_COUNT; + + /** + * The tree walker threads number. + */ + private static final int TREE_WALKER_THREADS_NUMBER = DEFAULT_THREAD_COUNT; + + /** + * List of file to validate. + */ + @CommandLine.Parameters(arity = "1..*", description = "One or more source files to verify") + private List files; + + /** + * Config file location. + */ + @CommandLine.Option(names = "-c", description = "Specifies the location of the file that defines" + + " the configuration modules. The location can either be a filesystem location" + + ", or a name passed to the ClassLoader.getResource() method.") + private String configurationFile; + + /** + * Output file location. + */ + @CommandLine.Option(names = "-o", description = "Sets the output file. Defaults to stdout.") + private Path outputPath; + + /** + * Properties file location. + */ + @CommandLine.Option(names = "-p", description = "Sets the property files to load.") + private File propertiesFile; + + /** + * Tab character length. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = {"-w", "--tabWidth"}, + description = "Sets the length of the tab character. " + + "Used only with -s option. Default value is ${DEFAULT-VALUE}.") + private int tabWidth = CommonUtil.DEFAULT_TAB_WIDTH; + + /** + * Switch whether to generate suppressions file or not. + */ + @CommandLine.Option(names = {"-g", "--generate-xpath-suppression"}, + description = "Generates to output a suppression xml to use to suppress all " + + "violations from user's config. Instead of printing every violation, " + + "all violations will be catched and single suppressions xml file will " + + "be printed out. Used only with -c option. Output " + + "location can be specified with -o option.") + private boolean generateXpathSuppressionsFile; + + /** + * Output format. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = "-f", + description = "Specifies the output format. Valid values: " + + "${COMPLETION-CANDIDATES} for XMLLogger, SarifLogger, " + + "and DefaultLogger respectively. Defaults to ${DEFAULT-VALUE}.") + private OutputFormat format = DEFAULT_OUTPUT_FORMAT; + + /** + * Option that allows users to specify a list of paths to exclude. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = {"-e", "--exclude"}, + description = "Directory/file to exclude from CheckStyle. The path can be the " + + "full, absolute path, or relative to the current path. Multiple " + + "excludes are allowed.") + private List exclude = new ArrayList<>(); + + /** + * Option that allows users to specify a regex of paths to exclude. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = {"-x", "--exclude-regexp"}, + description = "Directory/file pattern to exclude from CheckStyle. Multiple " + + "excludes are allowed.") + private List excludeRegex = new ArrayList<>(); + + /** + * Switch whether to execute ignored modules or not. + */ + @CommandLine.Option(names = {"-E", "--executeIgnoredModules"}, + description = "Allows ignored modules to be run.") + private boolean executeIgnoredModules; + + /** + * Gets the list of exclusions provided through the command line arguments. + * + * @return List of exclusion patterns. + */ + private List getExclusions() { + final List result = exclude.stream() + .map(File::getAbsolutePath) + .map(Pattern::quote) + .map(pattern -> Pattern.compile("^" + pattern + "$")) + .collect(Collectors.toCollection(ArrayList::new)); + result.addAll(excludeRegex); + return result; + } + } +} diff --git a/component/CoceInspector/code_inspector/src/main/resources/config.properties b/component/CoceInspector/code_inspector/src/main/resources/config.properties new file mode 100644 index 0000000..b2379aa --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/config.properties @@ -0,0 +1,4 @@ +# +mode=product + +root.dir=/tmp/code_inspector \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/log4j2.xml b/component/CoceInspector/code_inspector/src/main/resources/log4j2.xml new file mode 100644 index 0000000..7cf97e2 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/log4j2.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml b/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml new file mode 100644 index 0000000..c757a99 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml @@ -0,0 +1,27 @@ + + + + + + + create table if not exist rule_violation_info + ( + id integer primary key autoincrement, + rule_id int, + file_path_hash int, + file_path varchar(256), + line varchar(256), + lineno int, + merge_id varchar(50), + message varchar(256), + shielded boolean, + commit_request_to_shield boolean, + time long + ) + + + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml b/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml new file mode 100644 index 0000000..4d7a1cb --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + insert into rule_violation_info (rule_id, file_path_hash, file_path, line, lineno, merge_id, message, shielded, + commit_request_to_shield, time) values + + ( + #{item.ruleId}, #{item.filePathHash}, #{item.filePath}, #{item.line}, #{item.lineno}, + #{item.merge_id}, #{item.message}, #{item.shielded}, #{item.commit_request_to_shield}, #{item.time} + ) + + + + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml b/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml new file mode 100644 index 0000000..fc3ca34 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java new file mode 100644 index 0000000..1495ec9 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java @@ -0,0 +1,10 @@ +package com.huawei.devkit.code.inspector; + +import org.junit.jupiter.api.Test; + +public class CodeInspectorTest { + @Test + void test01(){ + System.out.println(); + } +} -- Gitee From 5da09e57a9922806a56736034a6e840b0062613b Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Mon, 15 Jul 2024 10:52:59 +0800 Subject: [PATCH 02/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9checkstyle=EF=BC=8C?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devkit/code/inspector/CodeInspector.java | 18 +- .../code/inspector/entity/CliOptions.java | 169 +++++++++++ .../code/inspector/entity/OutputStyle.java | 67 +++++ .../inspector/listener/DataBaseListener.java | 28 +- .../inspector/wrappers/CheckStyleWrapper.java | 263 ++---------------- .../src/main/resources/config.properties | 4 +- .../main/resources/mappers/DataBaseMapper.xml | 2 +- .../mappers/RuleViolationInfoMapper.xml | 8 +- .../resources/rule_sets/devkit_checkstyle.xml | 42 +++ .../code/inspector/CodeInspectorTest.java | 2 +- .../resources/case/CodeInspectorTestCase.java | 14 + .../src/test/resources/google_checks.xml | 37 +++ 12 files changed, 390 insertions(+), 264 deletions(-) create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java create mode 100644 component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/google_checks.xml diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java index 0e1863c..0ae6eb3 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -1,23 +1,35 @@ package com.huawei.devkit.code.inspector; +import com.huawei.devkit.code.inspector.entity.CliOptions; import com.huawei.devkit.code.inspector.perload.DataBasePreLoad; import com.huawei.devkit.code.inspector.utils.PropertiesUtils; import com.huawei.devkit.code.inspector.wrappers.CheckStyleWrapper; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import picocli.CommandLine; import java.io.IOException; import java.util.Properties; public class CodeInspector { + private static final Logger logger = LogManager.getLogger(CodeInspector.class); + + public static void main(String[] args) { try { + logger.info("start enter log"); + final CliOptions cliOptions = new CliOptions(); + final CommandLine commandLine = new CommandLine(cliOptions); + commandLine.setUsageHelpWidth(CliOptions.HELP_WIDTH); + commandLine.setCaseInsensitiveEnumValuesAllowed(true); + commandLine.parseArgs(args); Properties properties = PropertiesUtils.loadProperties("config.properties"); PropertiesUtils.configAndUpdate(properties); DataBasePreLoad.preload(properties); - CheckStyleWrapper.main(args); + CheckStyleWrapper.main(cliOptions); } catch (IOException ex) { - ex.printStackTrace(); + logger.error("error", ex); } - } } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java new file mode 100644 index 0000000..458e3d4 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java @@ -0,0 +1,169 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.entity; + +import com.puppycrawl.tools.checkstyle.utils.CommonUtil; +import lombok.Data; +import picocli.CommandLine; + +import java.io.File; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * CliOptions + * + * @since 2024-07-15 + */ +@Data +public class CliOptions { + /** + * Width of CLI help option. + */ + public static final int HELP_WIDTH = 100; + + /** + * The default number of threads to use for checker and the tree walker. + */ + private static final int DEFAULT_THREAD_COUNT = 1; + + /** + * Name for the moduleConfig attribute 'tabWidth'. + */ + public static final String ATTRIB_TAB_WIDTH_NAME = "tabWidth"; + + /** + * Default output format. + */ + private static final OutputStyle DEFAULT_OUTPUT_FORMAT = OutputStyle.PLAIN; + + /** + * Option name for output format. + */ + private static final String OUTPUT_FORMAT_OPTION = "-f"; + + /** + * The checker threads number. + * This option has been skipped for CLI options intentionally. + */ + public static final int CHECKER_THREADS_NUMBER = DEFAULT_THREAD_COUNT; + + /** + * The tree walker threads number. + */ + public static final int TREE_WALKER_THREADS_NUMBER = DEFAULT_THREAD_COUNT; + + /** + * List of file to validate. + */ + @CommandLine.Parameters(arity = "1..*", description = "One or more source files to verify") + private List files; + + /** + * Config file location. + */ + @CommandLine.Option(names = "-c", description = "Specifies the location of the file that defines" + + " the configuration modules. The location can either be a filesystem location" + + ", or a name passed to the ClassLoader.getResource() method.") + private String configurationFile; + + /** + * Output file location. + */ + @CommandLine.Option(names = "-o", description = "Sets the output file. Defaults to stdout.") + private Path outputPath; + + /** + * Properties file location. + */ + @CommandLine.Option(names = "-p", description = "Sets the property files to load.") + private File propertiesFile; + + /** + * Tab character length. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = {"-w", "--tabWidth"}, + description = "Sets the length of the tab character. " + + "Used only with -s option. Default value is ${DEFAULT-VALUE}.") + private int tabWidth = CommonUtil.DEFAULT_TAB_WIDTH; + + /** + * Switch whether to generate suppressions file or not. + */ + @CommandLine.Option(names = {"-g", "--generate-xpath-suppression"}, + description = "Generates to output a suppression xml to use to suppress all " + + "violations from user's config. Instead of printing every violation, " + + "all violations will be catched and single suppressions xml file will " + + "be printed out. Used only with -c option. Output " + + "location can be specified with -o option.") + private boolean generateXpathSuppressionsFile; + + /** + * Output format. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = "-f", + description = "Specifies the output format. Valid values: " + + "${COMPLETION-CANDIDATES} for XMLLogger, SarifLogger, " + + "and DefaultLogger respectively. Defaults to ${DEFAULT-VALUE}.") + private OutputStyle format = DEFAULT_OUTPUT_FORMAT; + + /** + * Option that allows users to specify a list of paths to exclude. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = {"-e", "--exclude"}, + description = "Directory/file to exclude from CheckStyle. The path can be the " + + "full, absolute path, or relative to the current path. Multiple " + + "excludes are allowed.") + private List exclude = new ArrayList<>(); + + /** + * Option that allows users to specify a regex of paths to exclude. + * + * @noinspection CanBeFinal + * @noinspectionreason CanBeFinal - we use picocli, and it uses + * reflection to manage such fields + */ + @CommandLine.Option(names = {"-x", "--exclude-regexp"}, + description = "Directory/file pattern to exclude from CheckStyle. Multiple " + + "excludes are allowed.") + private List excludeRegex = new ArrayList<>(); + + /** + * Switch whether to execute ignored modules or not. + */ + @CommandLine.Option(names = {"-E", "--executeIgnoredModules"}, + description = "Allows ignored modules to be run.") + private boolean executeIgnoredModules; + + /** + * Gets the list of exclusions provided through the command line arguments. + * + * @return List of exclusion patterns. + */ + public List getExclusions() { + final List result = exclude.stream() + .map(File::getAbsolutePath) + .map(Pattern::quote) + .map(pattern -> Pattern.compile("^" + pattern + "$")) + .collect(Collectors.toCollection(ArrayList::new)); + result.addAll(excludeRegex); + return result; + } +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java new file mode 100644 index 0000000..b3eebc2 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.entity; + +import com.puppycrawl.tools.checkstyle.AbstractAutomaticBean; +import com.puppycrawl.tools.checkstyle.DefaultLogger; +import com.puppycrawl.tools.checkstyle.SarifLogger; +import com.puppycrawl.tools.checkstyle.XMLLogger; +import com.puppycrawl.tools.checkstyle.api.AuditListener; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.Locale; + +/** + * OutputStyle + * + * @since 2024-07-15 + */ +public enum OutputStyle { + /** + * XML output format. + */ + XML, + /** + * SARIF output format. + */ + SARIF, + /** + * Plain output format. + */ + PLAIN; + + /** + * Returns a new AuditListener for this OutputFormat. + * + * @param out the output stream + * @param options the output stream options + * @return a new AuditListener for this OutputFormat + * @throws IOException if there is any IO exception during logger initialization + */ + public AuditListener createListener( + OutputStream out, + AbstractAutomaticBean.OutputStreamOptions options) throws IOException { + final AuditListener result; + if (this == XML) { + result = new XMLLogger(out, options); + } else if (this == SARIF) { + result = new SarifLogger(out, options); + } else { + result = new DefaultLogger(out, options); + } + return result; + } + + /** + * Returns the name in lowercase. + * + * @return the enum name in lowercase + */ + @Override + public String toString() { + return name().toLowerCase(Locale.ROOT); + } +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java index 768c873..8025b02 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java @@ -5,16 +5,21 @@ package com.huawei.devkit.code.inspector.listener; import com.google.common.io.Files; +import com.huawei.devkit.code.inspector.dao.RuleViolationInfoMapper; import com.huawei.devkit.code.inspector.entity.RuleViolationInfo; +import com.huawei.devkit.code.inspector.perload.DataBasePreLoad; import com.puppycrawl.tools.checkstyle.api.AuditEvent; import com.puppycrawl.tools.checkstyle.api.AuditListener; import lombok.extern.log4j.Log4j2; +import org.apache.ibatis.session.SqlSession; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * DataBaseListener @@ -23,12 +28,14 @@ import java.util.List; */ @Log4j2 public class DataBaseListener implements AuditListener { + private final long time; private final String mergeId; - private List infoList; + private final List infoList; public DataBaseListener(String mergeId) { this.infoList = new ArrayList<>(); this.mergeId = mergeId; + this.time = System.currentTimeMillis(); } @Override @@ -38,8 +45,19 @@ public class DataBaseListener implements AuditListener { @Override public void auditFinished(AuditEvent event) { - long time = System.currentTimeMillis(); - + Map> collected = this.infoList.stream() + .collect(Collectors.groupingBy(RuleViolationInfo::getFilePath)); + for (Map.Entry> entry : collected.entrySet()) { + this.filledLine(entry.getKey(), entry.getValue()); + } + try (SqlSession sqlSession = DataBasePreLoad.getSqlSession()) { + RuleViolationInfoMapper mapper = sqlSession.getMapper(RuleViolationInfoMapper.class); + // todo 每100个执行一次 + for (int i = 0; i < this.infoList.size(); i += 100) { + mapper.addRuleViolationInfos(this.infoList); + } + sqlSession.commit(); + } } @Override @@ -55,7 +73,7 @@ public class DataBaseListener implements AuditListener { @Override public void addError(AuditEvent event) { RuleViolationInfo ruleViolation = RuleViolationInfo.builder().filePath(event.getFileName()) - .lineno(event.getLine()) + .lineno(event.getLine()).time(this.time).filePathHash(event.getFileName().hashCode()) .message(event.getMessage()).ruleId(event.getViolation().getModuleId()) .mergeId(this.mergeId).shielded(false).commitRequestToShield(false).build(); this.infoList.add(ruleViolation); @@ -70,7 +88,7 @@ public class DataBaseListener implements AuditListener { try { List lines = Files.readLines(new File(file), StandardCharsets.UTF_8); for (RuleViolationInfo info : infoList) { - info.setLine(lines.get(info.getLineno())); + info.setLine(lines.get(info.getLineno() - 1)); } } catch (IOException ex) { log.error("filled line", ex); diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java index 7212ed1..c337145 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -4,20 +4,20 @@ package com.huawei.devkit.code.inspector.wrappers; +import com.huawei.devkit.code.inspector.entity.CliOptions; +import com.huawei.devkit.code.inspector.entity.OutputStyle; +import com.huawei.devkit.code.inspector.listener.DataBaseListener; import com.puppycrawl.tools.checkstyle.AbstractAutomaticBean; import com.puppycrawl.tools.checkstyle.Checker; import com.puppycrawl.tools.checkstyle.ConfigurationLoader; import com.puppycrawl.tools.checkstyle.DefaultConfiguration; -import com.puppycrawl.tools.checkstyle.DefaultLogger; import com.puppycrawl.tools.checkstyle.Definitions; import com.puppycrawl.tools.checkstyle.LocalizedMessage; import com.puppycrawl.tools.checkstyle.Main; import com.puppycrawl.tools.checkstyle.ModuleFactory; import com.puppycrawl.tools.checkstyle.PackageObjectFactory; import com.puppycrawl.tools.checkstyle.PropertiesExpander; -import com.puppycrawl.tools.checkstyle.SarifLogger; import com.puppycrawl.tools.checkstyle.ThreadModeSettings; -import com.puppycrawl.tools.checkstyle.XMLLogger; import com.puppycrawl.tools.checkstyle.XpathFileGeneratorAstFilter; import com.puppycrawl.tools.checkstyle.XpathFileGeneratorAuditListener; import com.puppycrawl.tools.checkstyle.api.AuditEvent; @@ -26,7 +26,6 @@ import com.puppycrawl.tools.checkstyle.api.CheckstyleException; import com.puppycrawl.tools.checkstyle.api.Configuration; import com.puppycrawl.tools.checkstyle.api.RootModule; import com.puppycrawl.tools.checkstyle.utils.ChainedPropertyUtil; -import com.puppycrawl.tools.checkstyle.utils.CommonUtil; import picocli.CommandLine; import java.io.File; @@ -35,13 +34,10 @@ import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import java.util.Locale; import java.util.Properties; import java.util.regex.Pattern; -import java.util.stream.Collectors; /** * CheckStyleWrapper @@ -69,7 +65,6 @@ public class CheckStyleWrapper { * Loops over the files specified checking them for errors. The exit code * is the number of errors found in all the files. * - * @param args the command line arguments. * @throws IOException if there is a problem with files access * @noinspection UseOfSystemOutOrSystemErr, CallToPrintStackTrace, CallToSystemExit * @noinspectionreason UseOfSystemOutOrSystemErr - driver class for Checkstyle requires @@ -78,17 +73,10 @@ public class CheckStyleWrapper { * show all details in case of failure * @noinspectionreason CallToSystemExit - driver class must call exit **/ - public static void main(String... args) throws IOException { - - final CliOptions cliOptions = new CliOptions(); - final CommandLine commandLine = new CommandLine(cliOptions); - commandLine.setUsageHelpWidth(CliOptions.HELP_WIDTH); - commandLine.setCaseInsensitiveEnumValuesAllowed(true); - + public static void main(CliOptions cliOptions) throws IOException { int exitStatus = 0; int errorCounter = 0; try { - commandLine.parseArgs(args); final List filesToProcess = getFilesToProcess(cliOptions); errorCounter = runCheckstyle(cliOptions, filesToProcess); } catch (CommandLine.ParameterException ex) { @@ -123,7 +111,7 @@ public class CheckStyleWrapper { final List patternsToExclude = options.getExclusions(); final List result = new LinkedList<>(); - for (File file : options.files) { + for (File file : options.getFiles()) { result.addAll(listFiles(file, patternsToExclude)); } return result; @@ -196,10 +184,10 @@ public class CheckStyleWrapper { // setup the properties final Properties props; - if (options.propertiesFile == null) { + if (options.getPropertiesFile() == null) { props = System.getProperties(); } else { - props = loadProperties(options.propertiesFile); + props = loadProperties(options.getPropertiesFile()); } // create a configuration @@ -208,14 +196,14 @@ public class CheckStyleWrapper { CliOptions.TREE_WALKER_THREADS_NUMBER); final ConfigurationLoader.IgnoredModulesOptions ignoredModulesOptions; - if (options.executeIgnoredModules) { + if (options.isExecuteIgnoredModules()) { ignoredModulesOptions = ConfigurationLoader.IgnoredModulesOptions.EXECUTE; } else { ignoredModulesOptions = ConfigurationLoader.IgnoredModulesOptions.OMIT; } final Configuration config = ConfigurationLoader.loadConfiguration( - options.configurationFile, new PropertiesExpander(props), + options.getConfigurationFile(), new PropertiesExpander(props), ignoredModulesOptions, multiThreadModeSettings); // create RootModule object and run it @@ -225,7 +213,7 @@ public class CheckStyleWrapper { try { final AuditListener listener; - if (options.generateXpathSuppressionsFile) { + if (options.isGenerateXpathSuppressionsFile()) { // create filter to print generated xpath suppressions file final Configuration treeWalkerConfig = getTreeWalkerConfig(config); if (treeWalkerConfig != null) { @@ -233,19 +221,21 @@ public class CheckStyleWrapper { new DefaultConfiguration( XpathFileGeneratorAstFilter.class.getName()); moduleConfig.addProperty(CliOptions.ATTRIB_TAB_WIDTH_NAME, - String.valueOf(options.tabWidth)); + String.valueOf(options.getTabWidth())); ((DefaultConfiguration) treeWalkerConfig).addChild(moduleConfig); } - listener = new XpathFileGeneratorAuditListener(getOutputStream(options.outputPath), - getOutputStreamOptions(options.outputPath)); + listener = new XpathFileGeneratorAuditListener(getOutputStream(options.getOutputPath()), + getOutputStreamOptions(options.getOutputPath())); } else { - listener = createListener(options.format, options.outputPath); + listener = createListener(options.getFormat(), options.getOutputPath()); } rootModule.setModuleClassLoader(moduleClassLoader); rootModule.configure(config); + DataBaseListener baseListener = new DataBaseListener(""); rootModule.addListener(listener); + rootModule.addListener(baseListener); // run RootModule errorCounter = rootModule.process(filesToProcess); @@ -326,7 +316,7 @@ public class CheckStyleWrapper { * @return a fresh new {@code AuditListener} * @throws IOException when provided output location is not found */ - private static AuditListener createListener(OutputFormat format, Path outputLocation) + private static AuditListener createListener(OutputStyle format, Path outputLocation) throws IOException { final OutputStream out = getOutputStream(outputLocation); final AbstractAutomaticBean.OutputStreamOptions closeOutputStreamOption = @@ -371,223 +361,4 @@ public class CheckStyleWrapper { return result; } - /** - * Enumeration over the possible output formats. - * - * @noinspection PackageVisibleInnerClass - * @noinspectionreason PackageVisibleInnerClass - we keep this enum package visible for tests - */ - enum OutputFormat { - /** - * XML output format. - */ - XML, - /** - * SARIF output format. - */ - SARIF, - /** - * Plain output format. - */ - PLAIN; - - /** - * Returns a new AuditListener for this OutputFormat. - * - * @param out the output stream - * @param options the output stream options - * @return a new AuditListener for this OutputFormat - * @throws IOException if there is any IO exception during logger initialization - */ - public AuditListener createListener( - OutputStream out, - AbstractAutomaticBean.OutputStreamOptions options) throws IOException { - final AuditListener result; - if (this == XML) { - result = new XMLLogger(out, options); - } else if (this == SARIF) { - result = new SarifLogger(out, options); - } else { - result = new DefaultLogger(out, options); - } - return result; - } - - /** - * Returns the name in lowercase. - * - * @return the enum name in lowercase - */ - @Override - public String toString() { - return name().toLowerCase(Locale.ROOT); - } - } - - /** - * Command line options. - * - * @noinspection unused, FieldMayBeFinal, CanBeFinal, - * MismatchedQueryAndUpdateOfCollection, LocalCanBeFinal - * @noinspectionreason FieldMayBeFinal - usage of picocli requires - * suppression of above inspections - * @noinspectionreason CanBeFinal - usage of picocli requires - * suppression of above inspections - * @noinspectionreason MismatchedQueryAndUpdateOfCollection - list of files is gathered and used - * via reflection by picocli library - * @noinspectionreason LocalCanBeFinal - usage of picocli requires - * suppression of above inspections - */ - @CommandLine.Command(name = "checkstyle", description = "Checkstyle verifies that the specified " - + "source code files adhere to the specified rules. By default, violations are " - + "reported to standard out in plain format. Checkstyle requires a configuration " - + "XML file that configures the checks to apply.", - mixinStandardHelpOptions = true) - private static final class CliOptions { - - /** - * Width of CLI help option. - */ - private static final int HELP_WIDTH = 100; - - /** - * The default number of threads to use for checker and the tree walker. - */ - private static final int DEFAULT_THREAD_COUNT = 1; - - /** - * Name for the moduleConfig attribute 'tabWidth'. - */ - private static final String ATTRIB_TAB_WIDTH_NAME = "tabWidth"; - - /** - * Default output format. - */ - private static final OutputFormat DEFAULT_OUTPUT_FORMAT = OutputFormat.PLAIN; - - /** - * Option name for output format. - */ - private static final String OUTPUT_FORMAT_OPTION = "-f"; - - /** - * The checker threads number. - * This option has been skipped for CLI options intentionally. - */ - private static final int CHECKER_THREADS_NUMBER = DEFAULT_THREAD_COUNT; - - /** - * The tree walker threads number. - */ - private static final int TREE_WALKER_THREADS_NUMBER = DEFAULT_THREAD_COUNT; - - /** - * List of file to validate. - */ - @CommandLine.Parameters(arity = "1..*", description = "One or more source files to verify") - private List files; - - /** - * Config file location. - */ - @CommandLine.Option(names = "-c", description = "Specifies the location of the file that defines" - + " the configuration modules. The location can either be a filesystem location" - + ", or a name passed to the ClassLoader.getResource() method.") - private String configurationFile; - - /** - * Output file location. - */ - @CommandLine.Option(names = "-o", description = "Sets the output file. Defaults to stdout.") - private Path outputPath; - - /** - * Properties file location. - */ - @CommandLine.Option(names = "-p", description = "Sets the property files to load.") - private File propertiesFile; - - /** - * Tab character length. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields - */ - @CommandLine.Option(names = {"-w", "--tabWidth"}, - description = "Sets the length of the tab character. " - + "Used only with -s option. Default value is ${DEFAULT-VALUE}.") - private int tabWidth = CommonUtil.DEFAULT_TAB_WIDTH; - - /** - * Switch whether to generate suppressions file or not. - */ - @CommandLine.Option(names = {"-g", "--generate-xpath-suppression"}, - description = "Generates to output a suppression xml to use to suppress all " - + "violations from user's config. Instead of printing every violation, " - + "all violations will be catched and single suppressions xml file will " - + "be printed out. Used only with -c option. Output " - + "location can be specified with -o option.") - private boolean generateXpathSuppressionsFile; - - /** - * Output format. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields - */ - @CommandLine.Option(names = "-f", - description = "Specifies the output format. Valid values: " - + "${COMPLETION-CANDIDATES} for XMLLogger, SarifLogger, " - + "and DefaultLogger respectively. Defaults to ${DEFAULT-VALUE}.") - private OutputFormat format = DEFAULT_OUTPUT_FORMAT; - - /** - * Option that allows users to specify a list of paths to exclude. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields - */ - @CommandLine.Option(names = {"-e", "--exclude"}, - description = "Directory/file to exclude from CheckStyle. The path can be the " - + "full, absolute path, or relative to the current path. Multiple " - + "excludes are allowed.") - private List exclude = new ArrayList<>(); - - /** - * Option that allows users to specify a regex of paths to exclude. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields - */ - @CommandLine.Option(names = {"-x", "--exclude-regexp"}, - description = "Directory/file pattern to exclude from CheckStyle. Multiple " - + "excludes are allowed.") - private List excludeRegex = new ArrayList<>(); - - /** - * Switch whether to execute ignored modules or not. - */ - @CommandLine.Option(names = {"-E", "--executeIgnoredModules"}, - description = "Allows ignored modules to be run.") - private boolean executeIgnoredModules; - - /** - * Gets the list of exclusions provided through the command line arguments. - * - * @return List of exclusion patterns. - */ - private List getExclusions() { - final List result = exclude.stream() - .map(File::getAbsolutePath) - .map(Pattern::quote) - .map(pattern -> Pattern.compile("^" + pattern + "$")) - .collect(Collectors.toCollection(ArrayList::new)); - result.addAll(excludeRegex); - return result; - } - } } diff --git a/component/CoceInspector/code_inspector/src/main/resources/config.properties b/component/CoceInspector/code_inspector/src/main/resources/config.properties index b2379aa..75a4eef 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/config.properties +++ b/component/CoceInspector/code_inspector/src/main/resources/config.properties @@ -1,4 +1,4 @@ # -mode=product - +#mode=product +mode=dev root.dir=/tmp/code_inspector \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml b/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml index c757a99..f3ddb29 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml +++ b/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml @@ -8,7 +8,7 @@ - create table if not exist rule_violation_info + create table if not exists rule_violation_info ( id integer primary key autoincrement, rule_id int, diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml b/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml index 4d7a1cb..8dadb6b 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml +++ b/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml @@ -7,16 +7,12 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into rule_violation_info (rule_id, file_path_hash, file_path, line, lineno, merge_id, message, shielded, commit_request_to_shield, time) values - ( - #{item.ruleId}, #{item.filePathHash}, #{item.filePath}, #{item.line}, #{item.lineno}, - #{item.merge_id}, #{item.message}, #{item.shielded}, #{item.commit_request_to_shield}, #{item.time} - ) + (#{item.ruleId}, #{item.filePathHash}, #{item.filePath}, #{item.line}, #{item.lineno}, + #{item.mergeId}, #{item.message}, #{item.shielded}, #{item.commitRequestToShield}, #{item.time}) - \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml b/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml new file mode 100644 index 0000000..ab53b31 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java index 1495ec9..cb7bc81 100644 --- a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; public class CodeInspectorTest { @Test - void test01(){ + void test01() { System.out.println(); } } diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java new file mode 100644 index 0000000..38c1be4 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector; + +import org.junit.jupiter.api.Test; + +public class CodeInspectorTestCase { + + @Test void test01() { + System.out.println(); + } +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml b/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml new file mode 100644 index 0000000..f248647 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + -- Gitee From a2f278d9ec31303cae6d6c93ee1d326cef72b9ff Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Mon, 15 Jul 2024 11:33:24 +0800 Subject: [PATCH 03/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9checkstyle=EF=BC=8C?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code/inspector/entity/RuleViolationInfo.java | 1 + .../code/inspector/listener/DataBaseListener.java | 4 +++- .../src/main/resources/mappers/DataBaseMapper.xml | 1 + .../resources/mappers/RuleViolationInfoMapper.xml | 6 +++--- .../main/resources/rule_sets/devkit_checkstyle.xml | 11 +++++++++-- .../src/test/resources/google_checks.xml | 3 ++- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java index 1cd54dc..a663ce8 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java @@ -26,4 +26,5 @@ public class RuleViolationInfo { private boolean shielded; private boolean commitRequestToShield; private long time; + private int level; } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java index 8025b02..1cdf887 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java @@ -10,6 +10,7 @@ import com.huawei.devkit.code.inspector.entity.RuleViolationInfo; import com.huawei.devkit.code.inspector.perload.DataBasePreLoad; import com.puppycrawl.tools.checkstyle.api.AuditEvent; import com.puppycrawl.tools.checkstyle.api.AuditListener; +import com.puppycrawl.tools.checkstyle.api.SeverityLevel; import lombok.extern.log4j.Log4j2; import org.apache.ibatis.session.SqlSession; @@ -75,7 +76,8 @@ public class DataBaseListener implements AuditListener { RuleViolationInfo ruleViolation = RuleViolationInfo.builder().filePath(event.getFileName()) .lineno(event.getLine()).time(this.time).filePathHash(event.getFileName().hashCode()) .message(event.getMessage()).ruleId(event.getViolation().getModuleId()) - .mergeId(this.mergeId).shielded(false).commitRequestToShield(false).build(); + .mergeId(this.mergeId).shielded(false).commitRequestToShield(false) + .level(SeverityLevel.ERROR == event.getSeverityLevel() ? 1 : 0).build(); this.infoList.add(ruleViolation); } diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml b/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml index f3ddb29..2a41e45 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml +++ b/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml @@ -16,6 +16,7 @@ file_path varchar(256), line varchar(256), lineno int, + level int, merge_id varchar(50), message varchar(256), shielded boolean, diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml b/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml index 8dadb6b..201054a 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml +++ b/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml @@ -8,10 +8,10 @@ - insert into rule_violation_info (rule_id, file_path_hash, file_path, line, lineno, merge_id, message, shielded, - commit_request_to_shield, time) values + insert into rule_violation_info (rule_id, file_path_hash, file_path, line, lineno,level, merge_id, message, + shielded, commit_request_to_shield, time) values - (#{item.ruleId}, #{item.filePathHash}, #{item.filePath}, #{item.line}, #{item.lineno}, + (#{item.ruleId}, #{item.filePathHash}, #{item.filePath}, #{item.line}, #{item.level}, #{item.lineno}, #{item.mergeId}, #{item.message}, #{item.shielded}, #{item.commitRequestToShield}, #{item.time}) diff --git a/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml b/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml index ab53b31..c42ab9c 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml +++ b/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml @@ -24,7 +24,7 @@ - + @@ -37,6 +37,13 @@ - + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml b/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml index f248647..75e60e6 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml +++ b/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml @@ -16,7 +16,7 @@ Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov. --> - + @@ -25,6 +25,7 @@ value="false"/> + -- Gitee From 128268721852b568300e3c7e211d857a80ea0ed2 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Mon, 15 Jul 2024 15:26:57 +0800 Subject: [PATCH 04/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9checkstyle=EF=BC=8C?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/huawei/devkit/code/inspector/CodeInspectorTest.java | 2 ++ .../src/test/resources/case/CodeInspectorTestCase.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java index cb7bc81..167daf1 100644 --- a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java @@ -5,6 +5,8 @@ import org.junit.jupiter.api.Test; public class CodeInspectorTest { @Test void test01() { + String root = System.getProperty("user.dir"); + String path = this.getClass().getClassLoader().getResource("case/CodeInspectorTestCase.java").getPath(); System.out.println(); } } diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java index 38c1be4..6bb7254 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java +++ b/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java @@ -9,6 +9,6 @@ import org.junit.jupiter.api.Test; public class CodeInspectorTestCase { @Test void test01() { - System.out.println(); + System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println(); } } -- Gitee From 9e18bf52ed379e751d769402ad4622e3cfb6746e Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Mon, 15 Jul 2024 15:48:41 +0800 Subject: [PATCH 05/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9checkstyle=EF=BC=8C?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devkit/code/inspector/CodeInspector.java | 12 ++++++++++- .../inspector/wrappers/CheckStyleWrapper.java | 20 +------------------ .../code/inspector/CodeInspectorTest.java | 3 +++ 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java index 0ae6eb3..c72345a 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -12,11 +12,13 @@ import java.io.IOException; import java.util.Properties; public class CodeInspector { + private static final int EXIT_WITH_INVALID_USER_INPUT_CODE = -1; private static final Logger logger = LogManager.getLogger(CodeInspector.class); public static void main(String[] args) { + int status = 0; try { logger.info("start enter log"); final CliOptions cliOptions = new CliOptions(); @@ -27,9 +29,17 @@ public class CodeInspector { Properties properties = PropertiesUtils.loadProperties("config.properties"); PropertiesUtils.configAndUpdate(properties); DataBasePreLoad.preload(properties); - CheckStyleWrapper.main(cliOptions); + CheckStyleWrapper.checkStyle(cliOptions); + } catch (CommandLine.ParameterException ex) { + status = -1; + logger.error("error", ex); + System.err.println(ex.getMessage()); + System.err.println("Usage: checkstyle [OPTIONS]... FILES..."); + System.err.println("Try 'checkstyle --help' for more information."); } catch (IOException ex) { + status = -1; logger.error("error", ex); } + Runtime.getRuntime().exit(status); } } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java index c337145..8e1f634 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -26,7 +26,6 @@ import com.puppycrawl.tools.checkstyle.api.CheckstyleException; import com.puppycrawl.tools.checkstyle.api.Configuration; import com.puppycrawl.tools.checkstyle.api.RootModule; import com.puppycrawl.tools.checkstyle.utils.ChainedPropertyUtil; -import picocli.CommandLine; import java.io.File; import java.io.IOException; @@ -57,37 +56,20 @@ public class CheckStyleWrapper { */ public static final String LOAD_PROPERTIES_EXCEPTION = "Main.loadProperties"; - private static final int EXIT_WITH_INVALID_USER_INPUT_CODE = -1; - private static final int EXIT_WITH_CHECKSTYLE_EXCEPTION_CODE = -2; - /** * Loops over the files specified checking them for errors. The exit code * is the number of errors found in all the files. * * @throws IOException if there is a problem with files access - * @noinspection UseOfSystemOutOrSystemErr, CallToPrintStackTrace, CallToSystemExit - * @noinspectionreason UseOfSystemOutOrSystemErr - driver class for Checkstyle requires - * usage of System.out and System.err - * @noinspectionreason CallToPrintStackTrace - driver class for Checkstyle must be able to - * show all details in case of failure - * @noinspectionreason CallToSystemExit - driver class must call exit **/ - public static void main(CliOptions cliOptions) throws IOException { - int exitStatus = 0; + public static void checkStyle(CliOptions cliOptions) throws IOException { int errorCounter = 0; try { final List filesToProcess = getFilesToProcess(cliOptions); errorCounter = runCheckstyle(cliOptions, filesToProcess); - } catch (CommandLine.ParameterException ex) { - exitStatus = EXIT_WITH_INVALID_USER_INPUT_CODE; - System.err.println(ex.getMessage()); - System.err.println("Usage: checkstyle [OPTIONS]... FILES..."); - System.err.println("Try 'checkstyle --help' for more information."); } catch (CheckstyleException ex) { - exitStatus = EXIT_WITH_CHECKSTYLE_EXCEPTION_CODE; errorCounter = 1; - ex.printStackTrace(); } finally { // return exit code base on validation of Checker if (errorCounter > 0) { diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java index 167daf1..9303891 100644 --- a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java @@ -1,5 +1,6 @@ package com.huawei.devkit.code.inspector; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class CodeInspectorTest { @@ -7,6 +8,8 @@ public class CodeInspectorTest { void test01() { String root = System.getProperty("user.dir"); String path = this.getClass().getClassLoader().getResource("case/CodeInspectorTestCase.java").getPath(); + Assertions.assertDoesNotThrow(() -> { + }); System.out.println(); } } -- Gitee From dca6176966b363843ada21c5f623d6816679136e Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Tue, 16 Jul 2024 09:34:45 +0800 Subject: [PATCH 06/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9checkstyle=EF=BC=8C?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devkit/code/inspector/CodeInspector.java | 5 +- .../inspector/listener/DataBaseListener.java | 10 +- .../inspector/wrappers/CheckStyleWrapper.java | 9 +- .../src/test/resources/annotationlocation.xml | 218 ++++++++++++++++++ .../resources/case/AvoidNestedBlocksCase.java | 23 ++ .../resources/case/CodeInspectorTestCase.java | 14 ++ .../ConstructorsDeclarationGroupingCase.java | 31 +++ .../resources/case/CovariantEqualsCase.java | 19 ++ .../resources/case/DeclarationOrderCase.java | 20 ++ .../resources/case/DefaultComesLastCase.java | 36 +++ .../resources/case/EmptyCatchBlockCase.java | 31 +++ .../resources/case/EmptyStatementCase.java | 15 ++ .../resources/case/EqualsAvoidNullCase.java | 9 + .../resources/case/EqualsHashCodeCase.java | 46 ++++ .../test/resources/case/FallThroughCase.java | 32 +++ .../test/resources/case/HiddenFieldCase.java | 21 ++ .../test/resources/case/IllegalCatchCase.java | 29 +++ .../case/IllegalInstantiationCase.java | 21 ++ .../test/resources/case/InnerAssignment.java | 17 ++ .../test/resources/case/LeftCurlyCase.java | 16 ++ .../test/resources/case/MagicNumberCase.java | 17 ++ .../case/MissingSwitchDefaultCase.java | 22 ++ .../case/ModifiedControlVariableCase.java | 11 + .../case/MultipleStringLiterals.java | 15 ++ .../case/MultipleVariableDeclarations.java | 20 ++ .../test/resources/case/NeedBracesCase.java | 35 +++ .../test/resources/case/NestedForDepth.java | 15 ++ .../resources/case/NestedIfDepthCase.java | 17 ++ .../resources/case/NestedTryDepthCase.java | 19 ++ .../src/test/resources/case/NoCloneCase.java | 9 + .../test/resources/case/NoFinalizerCase.java | 16 ++ .../case/OneStatementPerLineCase.java | 26 +++ .../resources/case/OneTopLevelClassCase.java | 15 ++ .../OverloadMethodsDeclarationOrderCase.java | 9 + .../case/ParameterAssignmentCase.java | 33 +++ .../resources/case/RightCurlyAloneCase.java | 41 ++++ .../resources/case/RightCurlySameCase.java | 52 +++++ .../case/SimplifyBooleanExpressionCase.java | 27 +++ .../case/SimplifyBooleanReturnCase.java | 50 ++++ .../case/StringLiteralEqualityCase.java | 17 ++ .../test/resources/case/SuperCloneCase.java | 23 ++ .../resources/case/SuperFinalizeCase.java | 15 ++ .../test/resources/case/ThrowsCountCase.java | 27 +++ ...emicolonAfterOuterTypeDeclarationCase.java | 22 ++ ...micolonAfterTypeMemberDeclarationCase.java | 25 ++ ...essarySemicolonInTryWithResourcesCase.java | 15 ++ .../case/UnusedLocalVariableCase.java | 50 ++++ .../VariableDeclarationUsageDistanceCase.java | 25 ++ .../case/VisibilityModifierCase.java | 40 ++++ .../src/test/resources/google_checks.xml | 38 --- 50 files changed, 1320 insertions(+), 48 deletions(-) create mode 100644 component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/AvoidNestedBlocksCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/ConstructorsDeclarationGroupingCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/CovariantEqualsCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/DeclarationOrderCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/DefaultComesLastCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/EmptyCatchBlockCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/EmptyStatementCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/EqualsAvoidNullCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/EqualsHashCodeCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/FallThroughCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/HiddenFieldCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/IllegalInstantiationCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/InnerAssignment.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/LeftCurlyCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/MissingSwitchDefaultCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/ModifiedControlVariableCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/MultipleStringLiterals.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/MultipleVariableDeclarations.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/NeedBracesCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/NestedForDepth.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/NestedIfDepthCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/NestedTryDepthCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/NoCloneCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/NoFinalizerCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/OneStatementPerLineCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/OneTopLevelClassCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/OverloadMethodsDeclarationOrderCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/ParameterAssignmentCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/RightCurlyAloneCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/RightCurlySameCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanExpressionCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanReturnCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/StringLiteralEqualityCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/SuperCloneCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/SuperFinalizeCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/ThrowsCountCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonInTryWithResourcesCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/UnusedLocalVariableCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/VariableDeclarationUsageDistanceCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/VisibilityModifierCase.java delete mode 100644 component/CoceInspector/code_inspector/src/test/resources/google_checks.xml diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java index c72345a..676acc5 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -8,7 +8,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import picocli.CommandLine; -import java.io.IOException; import java.util.Properties; public class CodeInspector { @@ -36,10 +35,10 @@ public class CodeInspector { System.err.println(ex.getMessage()); System.err.println("Usage: checkstyle [OPTIONS]... FILES..."); System.err.println("Try 'checkstyle --help' for more information."); - } catch (IOException ex) { + } catch (Exception ex) { status = -1; logger.error("error", ex); } - Runtime.getRuntime().exit(status); +// Runtime.getRuntime().exit(status); } } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java index 1cdf887..e73a498 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java @@ -11,8 +11,9 @@ import com.huawei.devkit.code.inspector.perload.DataBasePreLoad; import com.puppycrawl.tools.checkstyle.api.AuditEvent; import com.puppycrawl.tools.checkstyle.api.AuditListener; import com.puppycrawl.tools.checkstyle.api.SeverityLevel; -import lombok.extern.log4j.Log4j2; import org.apache.ibatis.session.SqlSession; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.File; import java.io.IOException; @@ -27,8 +28,9 @@ import java.util.stream.Collectors; * * @since 2024-07-11 */ -@Log4j2 public class DataBaseListener implements AuditListener { + + private static final Logger logger = LogManager.getLogger(DataBaseListener.class); private final long time; private final String mergeId; private final List infoList; @@ -83,7 +85,7 @@ public class DataBaseListener implements AuditListener { @Override public void addException(AuditEvent event, Throwable throwable) { - + logger.error("entry", throwable); } private void filledLine(String file, List infoList) { @@ -93,7 +95,7 @@ public class DataBaseListener implements AuditListener { info.setLine(lines.get(info.getLineno() - 1)); } } catch (IOException ex) { - log.error("filled line", ex); + logger.error("filled line", ex); } } } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java index 8e1f634..8162d9d 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -26,6 +26,8 @@ import com.puppycrawl.tools.checkstyle.api.CheckstyleException; import com.puppycrawl.tools.checkstyle.api.Configuration; import com.puppycrawl.tools.checkstyle.api.RootModule; import com.puppycrawl.tools.checkstyle.utils.ChainedPropertyUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.File; import java.io.IOException; @@ -44,6 +46,7 @@ import java.util.regex.Pattern; * @since 2024-07-11 */ public class CheckStyleWrapper { + private static final Logger logger = LogManager.getLogger(CheckStyleWrapper.class); /** * A key pointing to the error counter @@ -70,14 +73,14 @@ public class CheckStyleWrapper { errorCounter = runCheckstyle(cliOptions, filesToProcess); } catch (CheckstyleException ex) { errorCounter = 1; + } catch (Throwable ex) { + errorCounter = 1; + logger.error("xxxx"); } finally { - // return exit code base on validation of Checker if (errorCounter > 0) { final LocalizedMessage errorCounterViolation = new LocalizedMessage( Definitions.CHECKSTYLE_BUNDLE, Main.class, ERROR_COUNTER, String.valueOf(errorCounter)); - // print error count statistic to error output stream, - // output stream might be used by validation report content System.err.println(errorCounterViolation.getMessage()); } } diff --git a/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml b/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml new file mode 100644 index 0000000..588bef4 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/AvoidNestedBlocksCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/AvoidNestedBlocksCase.java new file mode 100644 index 0000000..0180a16 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/AvoidNestedBlocksCase.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class AvoidNestedBlocksCase { + public void foo() { + int myInteger = 0; + { // violation + myInteger = 2; + } + System.out.println("myInteger = " + myInteger); + + switch (a) { + case 1: { // violation + System.out.println("Case 1"); + break; + } + case 2: + System.out.println("Case 2"); + break; + } + } +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java index 6bb7254..a42ca27 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java +++ b/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java @@ -6,9 +6,23 @@ package com.huawei.devkit.code.inspector; import org.junit.jupiter.api.Test; +import javax.annotation.Nullable; + +@SuppressWarnings("unchecked") public class CodeInspectorTestCase { + @Nullable private String aab; @Test void test01() { System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println();System.out.println(); } + + + @Test + void test02(@Nullable String demo) { + System.out.println(demo); + } + + void test03(@Nullable String demo) { + System.out.println(demo); + } } diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/ConstructorsDeclarationGroupingCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/ConstructorsDeclarationGroupingCase.java new file mode 100644 index 0000000..699e52d --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/ConstructorsDeclarationGroupingCase.java @@ -0,0 +1,31 @@ +public class ConstructorsDeclarationGroupingCase { + + int x; + + ConstructorsDeclarationGroupingCase() {} + + ConstructorsDeclarationGroupingCase(String s){} + + void foo() {} + + ConstructorsDeclarationGroupingCase(int x) {} // violation + + ConstructorsDeclarationGroupingCase(String s, int x) {} // violation + + private enum ExampleEnum { + + ONE, TWO, THREE; + + ExampleEnum() {} + + ExampleEnum(int x) {} + + final int x = 10; + + ExampleEnum(String str) {} // violation + + void foo() {} + } + + ConstructorsDeclarationGroupingCase(float f) {} // violation +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/CovariantEqualsCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/CovariantEqualsCase.java new file mode 100644 index 0000000..ad191b5 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/CovariantEqualsCase.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class CovariantEqualsCase { + public boolean equals(CovariantEqualsCase i) { // violation + return false; + } +} + +class CovariantEqualsCase01 { + public boolean equals(CovariantEqualsCase01 i) { // no violation + return false; + } + + public boolean equals(Object i) { + return false; + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/DeclarationOrderCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/DeclarationOrderCase.java new file mode 100644 index 0000000..b9ec340 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/DeclarationOrderCase.java @@ -0,0 +1,20 @@ +public class DeclarationOrderCase { + + public int a; + protected int b; + public int c; // violation, variable access definition in wrong order + + DeclarationOrderCase() { + this.a = 0; + } + + public void foo() { + // This method does nothing + } + + DeclarationOrderCase(int a) { // OK, validation of constructors ignored + this.a = a; + } + + private String name; // violation, instance variable declaration in wrong order +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/DefaultComesLastCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/DefaultComesLastCase.java new file mode 100644 index 0000000..1ebf9c9 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/DefaultComesLastCase.java @@ -0,0 +1,36 @@ +public class DefaultComesLastCase { + public void test(int i){ + switch (i) { + case 1: + break; + case 2: + break; + default: // OK + break; + } + + switch (i) { + case 1: + break; + case 2: + break; // OK, no default + } + + switch (i) { + case 1: + break; + default: // violation, 'default' before 'case' + break; + case 2: + break; + } + + switch (i) { + case 1: + default: // violation, 'default' before 'case' + break; + case 2: + break; + } + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EmptyCatchBlockCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/EmptyCatchBlockCase.java new file mode 100644 index 0000000..90e5084 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/EmptyCatchBlockCase.java @@ -0,0 +1,31 @@ +public class EmptyCatchBlockCase { + private void exampleMethod1() { + try { + throw new RuntimeException(); + } catch (RuntimeException expected) { + } // violation above + } + + private void exampleMethod2() { + try { + throw new RuntimeException(); + } catch (Exception ignore) { + // no handling + } // ok, catch block has comment + } + + private void exampleMethod3 () { + try { + throw new RuntimeException(); + } catch (RuntimeException o) { + } // violation above + } + + private void exampleMethod4 () { + try { + throw new RuntimeException(); + } catch (RuntimeException ex) { + // This is expected + } + } +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EmptyStatementCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/EmptyStatementCase.java new file mode 100644 index 0000000..cebd058 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/EmptyStatementCase.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class EmptyStatementCase { + public void foo() { + int i = 5; + if(i > 3); // violation + i++; + for (i = 0; i < 5; i++); // violation + i++; + while (i > 10) + i++; + } +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EqualsAvoidNullCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/EqualsAvoidNullCase.java new file mode 100644 index 0000000..4d33dc4 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/EqualsAvoidNullCase.java @@ -0,0 +1,9 @@ +public class EqualsAvoidNullCase { + public void test(){ + String nullString = null; + nullString.equals("My_Sweet_String"); // violation + "My_Sweet_String".equals(nullString); // OK + nullString.equalsIgnoreCase("My_Sweet_String"); // violation + "My_Sweet_String".equalsIgnoreCase(nullString); // OK + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EqualsHashCodeCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/EqualsHashCodeCase.java new file mode 100644 index 0000000..61a9345 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/EqualsHashCodeCase.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class EqualsHashCodeCase { + public int hashCode() { // violation, no valid 'equals' + return 0; + } + public boolean equals(String o) { return false; } +} + +class ExampleNoHashCode { + public boolean equals(Object o) { // violation, no 'hashCode' + return false; + } + public boolean equals(String o) { return false; } +} + +class ExampleBothMethods1 { + public int hashCode() { return 0; } + public boolean equals(Object o) { // ok, both methods exist + return false; + } + public boolean equals(String o) { return false; } +} + +class ExampleBothMethods2 { + public int hashCode() { return 0; } + public boolean equals(java.lang.Object o) { // ok, both methods exist + return false; + } +} + +class ExampleNoValidHashCode { + public static int hashCode(int i) { return 0; } + public boolean equals(Object o) { // violation, no valid 'hashCode' + return false; + } +} + +class ExampleNoValidEquals { + public int hashCode() { // violation, no valid 'equals' + return 0; + } + public static boolean equals(Object o, Object o2) { return false; } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/FallThroughCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/FallThroughCase.java new file mode 100644 index 0000000..d24803e --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/FallThroughCase.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class FallThroughCase { + public void foo() throws Exception { + int i = 0; + while (i >= 0) { + switch (i) { + case 1: + i++; + case 2: // violation 'Fall\ through from previous branch of the switch' + i++; + break; + case 3: + i++; + return; + case 4: + i++; + throw new Exception(); + case 5: + i++; // no break by design + case 6: // violation 'Fall\ through from previous branch of the switch' + case 7: + i++; + continue; + case 11: // violation 'Fall\ through from the last branch of the switch' + i++; + } + } + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/HiddenFieldCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/HiddenFieldCase.java new file mode 100644 index 0000000..094bd5e --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/HiddenFieldCase.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class HiddenFieldCase { + + private String field; + private String testField; + + public HiddenFieldCase(String testField) { // OK, 'testField' param doesn't hide any field + } + public void method(String param) { // OK + String field = param; // violation, 'field' variable hides 'field' field + } + public void setTestField(String testField) { // OK, 'testField' param doesn't hide any field + this.field = field; + } + public HiddenFieldCase setField(String field) { // OK, 'field' param doesn't hide any field + this.field = field; + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java new file mode 100644 index 0000000..ea16a06 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java @@ -0,0 +1,29 @@ +public class IllegalCatchCase { + public void test(){ + try { + // some code here + } catch (Exception e) { // violation + + } + + try { + // some code here + } catch (ArithmeticException e) { // OK + + } catch (RuntimeException e) { // violation, catching Exception is illegal + and order of catch blocks doesn't matter + } + + try { + // some code here + } catch (NullPointerException) { // violation, catching Exception is illegal + + } + + try { + // some code here + } catch (ArithmeticException e) { // OK + + } + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/IllegalInstantiationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/IllegalInstantiationCase.java new file mode 100644 index 0000000..b479c3c --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/IllegalInstantiationCase.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class IllegalInstantiationCase { + public class Boolean { + boolean a; + + public Boolean (boolean a) { this.a = a; } + } + + public void myTest (boolean a, int b) { + Boolean c = new Boolean(a); // OK + java.lang.Boolean d = new java.lang.Boolean(a); // violation, instantiation of + // java.lang.Boolean should be avoided + + Integer e = new Integer(b); // violation, instantiation of + // java.lang.Integer should be avoided + Integer f = Integer.valueOf(b); // OK + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/InnerAssignment.java b/component/CoceInspector/code_inspector/src/test/resources/case/InnerAssignment.java new file mode 100644 index 0000000..ed3629e --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/InnerAssignment.java @@ -0,0 +1,17 @@ +public class InnerAssignment { + public void test(){ + String line; + while ((line = bufferedReader.readLine()) != null) { // OK + // process the line + } + + for (;(line = bufferedReader.readLine()) != null;) { // OK + // process the line + } + + do { + // process the line + } + while ((line = bufferedReader.readLine()) != null); // OK + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/LeftCurlyCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/LeftCurlyCase.java new file mode 100644 index 0000000..da78ff3 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/LeftCurlyCase.java @@ -0,0 +1,16 @@ +class LeftCurlyCase +{ // violation, ''{' at column 1 should be on the previous line.' + private interface TestInterface + { // violation, ''{' at column 3 should be on the previous line.' + } + + private + class + MyClass { // OK + } + + enum Colors {RED, // OK + BLUE, + GREEN; + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java new file mode 100644 index 0000000..beff8ff --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java @@ -0,0 +1,17 @@ +@MyAnnotation(6) // violation +class MagicNumberCase { + private field = 7; // violation + + void foo() { + int i = i + 1; // no violation + int j = j + 8; // violation + } + + public int hashCode() { + return 10; // violation + } +} +@interface anno { + int value() default 10; // no violation +} + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MissingSwitchDefaultCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/MissingSwitchDefaultCase.java new file mode 100644 index 0000000..6abc494 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/MissingSwitchDefaultCase.java @@ -0,0 +1,22 @@ +public class MissingSwitchDefaultCase { + public void test(int i, String o){ + switch (i) { + case 1: + break; + case 2: + break; + default: // OK + break; + } + switch (o) { + case String s: // type pattern + System.out.println(s); + break; + case Integer i: // type pattern + System.out.println("Integer"); + break; + default: // will not compile without default label, thanks to type pattern label usage + break; + } + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/ModifiedControlVariableCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/ModifiedControlVariableCase.java new file mode 100644 index 0000000..85e393e --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/ModifiedControlVariableCase.java @@ -0,0 +1,11 @@ +public class ModifiedControlVariableCase { + public void test(){ + for(int i=0;i < 8;i++) { + i++; // violation, control variable modified + } + String args1[]={"Coding", "block"}; + for (String arg: args1) { + arg = arg.trim(); // ok + } + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MultipleStringLiterals.java b/component/CoceInspector/code_inspector/src/test/resources/case/MultipleStringLiterals.java new file mode 100644 index 0000000..4bd5b22 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/MultipleStringLiterals.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class MultipleStringLiterals { + String a = "StringContents"; + String a1 = "unchecked"; + @SuppressWarnings("unchecked") // OK, duplicate strings are ignored in annotations + public void myTest() { + String a2 = "StringContents"; // OK, two occurrences are allowed + String a3 = "DoubleString" + "DoubleString"; // OK, two occurrences are allowed + String a4 = "SingleString"; // OK + String a5 = ", " + ", " + ", "; // violation, three occurrences are NOT allowed + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MultipleVariableDeclarations.java b/component/CoceInspector/code_inspector/src/test/resources/case/MultipleVariableDeclarations.java new file mode 100644 index 0000000..aeab699 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/MultipleVariableDeclarations.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class MultipleVariableDeclarations { + public void myTest() { + int mid; + int high; + // ... + + int lower, higher; // violation + // ... + + int value, + index; // violation + // ... + + int place = mid, number = high; // violation + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NeedBracesCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/NeedBracesCase.java new file mode 100644 index 0000000..5639ad1 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/NeedBracesCase.java @@ -0,0 +1,35 @@ +class NeedBracesCase { + String obj = new String(); + String value = new String(); + int counter = 1; + int count = 0; + int num = 12; + String o = "O"; + public boolean Example1() { + if (obj.equals(num)) return true; + // violation above, ''if' construct must use '{}'s.' + if (true) { + count = 2; + } else + // violation above, ''else' construct must use '{}'s.' + return false; + for (int i = 0; i < 5; i++) { + ++count;} + do // violation, ''do' construct must use '{}'s.' + ++count; + while (false); + for (int j = 0; j < 10; j++); + // violation above, ''for' construct must use '{}'s.' + for(int i = 0; i < 10; value.charAt(12)); + // violation above, ''for' construct must use '{}'s.' + while (counter < 10) + // violation above, ''while' construct must use '{}'s.' + ++count; + while (value.charAt(12) < 5); + // violation above, ''while' construct must use '{}'s.' + switch (num) { + case 1: counter++; break; + } + return true; + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NestedForDepth.java b/component/CoceInspector/code_inspector/src/test/resources/case/NestedForDepth.java new file mode 100644 index 0000000..3b97aa2 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/NestedForDepth.java @@ -0,0 +1,15 @@ +public class NestedForDepth { + public void test(){ + for(int i=0; i<10; i++) { + for(int j=0; j ++a == 12; // violation + IntBinaryOperator obj2 = (int a, int b) -> { + a++; // violation + b += 12; // violation + return a + b; + }; + IntPredicate obj3 = a -> { + int b = a; // ok + return ++b == 12; + }; +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlyAloneCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlyAloneCase.java new file mode 100644 index 0000000..4706b9c --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlyAloneCase.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + + +public class RightCurlyAloneCase { + + public void test() { + + boolean foo = false; + if (foo) { + bar(); + } else { bar(); } + // violation above, 'should be alone on a line.' + + if (foo) { + bar(); + } else { + bar(); + } + + try { + bar(); + } catch (Exception e) { + // OK above because config is set to token METHOD_DEF and LITERAL_ELSE + bar(); + } + + } + + private void bar() { + } + + public void violate() { Object bar = "bar"; } + // violation above, 'should be alone on a line.' + + public void ok() { + bar(); + } +} + diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlySameCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlySameCase.java new file mode 100644 index 0000000..d15f509 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlySameCase.java @@ -0,0 +1,52 @@ + +public class RightCurlySameCase{ + + public void test() { + boolean foo = false; + try (Foo foo = new Foo(); Bar bar = new Bar()) { + bar(); + } + if (foo) { + bar(); + } // violation, 'should be on the same line' + // as the next part of a multi-block statement (one that directly + // contains multiple blocks: if/else-if/else, do/while or try/catch/finally). + else { + bar(); + } + + if (foo) { + bar(); + } else { + bar(); + } + + if (foo) { bar(); } int i = 0; + // violation above, 'should be alone on a line.' + + if (foo) { bar(); } + i = 0; + + try { + bar(); + } // violation, 'should be on the same line' + // as the next part of a multi-block statement (one that directly + // contains multiple blocks: if/else-if/else, do/while or try/catch/finally). + catch (Exception e) { + bar(); + } + + try { + bar(); + } catch (Exception e) { + bar(); + } finally { + bar(); } + + } + + private void bar() { + } + + public void testSingleLine() { bar(); } // OK, because singleline is allowed +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanExpressionCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanExpressionCase.java new file mode 100644 index 0000000..ba82338 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanExpressionCase.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class SimplifyBooleanExpressionCase { + + public void bar() { + boolean a, b; + Foo c, d, e; + + if (!false) {}; // violation, can be simplified to true + + if (a == true) {}; // violation, can be simplified to a + if (a == b) {}; // OK + if (a == false) {}; // violation, can be simplified to !a + if (!(a != true)) {}; // violation, can be simplified to a + + e = (a || b) ? c : d; // OK + e = (a || false) ? c : d; // violation, can be simplified to a + e = (a && b) ? c : d; // OK + + int s = 12; + boolean m = s > 1 ? true : false; // violation, can be simplified to s > 1 + boolean f = c == null ? false : c.someMethod(); // OK + } + +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanReturnCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanReturnCase.java new file mode 100644 index 0000000..2fd8516 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanReturnCase.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class SimplifyBooleanReturnCase { + + private boolean cond; + private Foo a; + private Foo b; + + public boolean check1() { + if (cond) { // violation, can be simplified + return true; + } + else { + return false; + } + } + + // Ok, simplified version of check1() + public boolean check2() { + return cond; + } + + // violations, can be simplified + public boolean check3() { + if (cond == true) { // can be simplified to "if (cond)" + return false; + } + else { + return true; // can be simplified to "return !cond" + } + } + + // Ok, can be simplified but doesn't return a Boolean + public Foo choose1() { + if (cond) { + return a; + } + else { + return b; + } + } + + // Ok, simplified version of choose1() + public Foo choose2() { + return cond ? a: b; + } + +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/StringLiteralEqualityCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/StringLiteralEqualityCase.java new file mode 100644 index 0000000..5b0e488 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/StringLiteralEqualityCase.java @@ -0,0 +1,17 @@ +public class StringLiteralEqualityCase { + public void test(){ + String status = "pending"; + + if (status == "done") {} // violation + + while (status != "done") {} // violation + + boolean flag = (status == "done"); // violation + + boolean flag = (status.equals("done")); // OK + + String name = "X"; + if (name == getName()) {} + // OK, limitation that check cannot tell runtime type returned from method call + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SuperCloneCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/SuperCloneCase.java new file mode 100644 index 0000000..64bdcc4 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/SuperCloneCase.java @@ -0,0 +1,23 @@ +class SuperCloneCase { + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } +} + +class SuperCloneB { + private int b; + + // violation below, "Method 'clone' should call 'super.clone'." + public SuperCloneB clone() { + SuperCloneB other = new SuperCloneB(); + other.b = this.b; + return other; + } +} + +class SuperCloneC { + + public SuperCloneC clone() throws CloneNotSupportedException { + return (SuperCloneC) super.clone(); + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SuperFinalizeCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/SuperFinalizeCase.java new file mode 100644 index 0000000..56cae17 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/SuperFinalizeCase.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class SuperFinalizeCase { + protected void finalize() throws Throwable { + System.out.println("In finalize block"); + super.finalize(); // OK, calls super.finalize() + } +} +public class SuperFinalizeCase01 { + protected void finalize() throws Throwable { // violation + System.out.println("In finalize block"); + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/ThrowsCountCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/ThrowsCountCase.java new file mode 100644 index 0000000..16a0d83 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/ThrowsCountCase.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class Test { + public void myFunction() throws CloneNotSupportedException, + ArrayIndexOutOfBoundsException, + StringIndexOutOfBoundsException, + IllegalStateException, + NullPointerException { // violation, max allowed is 4 + // body + } + + public void myFunc() throws ArithmeticException, + NumberFormatException { // ok + // body + } + + private void privateFunc() throws CloneNotSupportedException, + ClassNotFoundException, + IllegalAccessException, + ArithmeticException, + ClassCastException { // ok, private methods are ignored + // body + } + +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java new file mode 100644 index 0000000..a3de063 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class UnnecessarySemicolonAfterOuterTypeDeclarationCase { + class Nested { + + }; // OK, nested type declarations are ignored + +}; // violation + +interface B { + +}; // violation + +enum C { + +}; // violation + +@interface D { + +}; // violation \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java new file mode 100644 index 0000000..03cba00 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class UnnecessarySemicolonAfterTypeMemberDeclarationCase { + ; // violation, standalone semicolon + {}; // violation, extra semicolon after init block + static {}; // violation, extra semicolon after static init block + UnnecessarySemicolonAfterTypeMemberDeclarationCase(){}; // violation, extra semicolon after constructor definition + void method() {}; // violation, extra semicolon after method definition + int field = 10;; // violation, extra semicolon after field declaration + + { + ; // no violation, it is empty statement inside init block + } + + static { + ; // no violation, it is empty statement inside static init block + } + + void anotherMethod() { + ; // no violation, it is empty statement + if(true); // no violation, it is empty statement + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonInTryWithResourcesCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonInTryWithResourcesCase.java new file mode 100644 index 0000000..0c77de0 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonInTryWithResourcesCase.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class UnnecessarySemicolonInTryWithResourcesCase { + void method() throws IOException { + try(Reader r1 = new PipedReader();){} // violation + try(Reader r4 = new PipedReader();Reader r5 = new PipedReader() + ;){} // violation + try(Reader r6 = new PipedReader(); + Reader r7 + = new PipedReader(); + ){} + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnusedLocalVariableCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/UnusedLocalVariableCase.java new file mode 100644 index 0000000..6f8232f --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/UnusedLocalVariableCase.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class UnusedLocalVariableCase { + { + int k = 12; // violation, assign and update but never use 'k' + k++; + } + + int a; + UnusedLocalVariableCase(int a) { // ok, as 'a' is a constructor parameter not a local variable + this.a = 12; + } + + void method(int b) { + int[] arr = {1, 2, 3}; // violation, unused local variable 'arr' + int[] anotherArr = {1}; // ok, 'anotherArr' is accessed + anotherArr[0] = 4; + } + + String convertValue(String newValue) { + String s = newValue.toLowerCase(); // violation, unused local variable 's' + return newValue.toLowerCase(); + } + + void read() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + String s; // violation, unused local variable 's' + while ((s = reader.readLine()) != null) {} + try (BufferedReader reader1 = // ok, 'reader1' is a resource + new BufferedReader(new FileReader("abc.txt"))) {} + try { + } catch (Exception e) { // ok, 'e' is an exception parameter + } + } + + void loops() { + int j = 12; + for (int i = 0; j < 11; i++) { // violation, unused local variable 'i' + } + for (int p = 0; j < 11; p++) // ok, 'p' is used + p /= 2; + } + + void lambdas() { + Predicate obj = (String str) -> true; // ok, 'str' is a lambda parameter + obj.test("Test"); + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/VariableDeclarationUsageDistanceCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/VariableDeclarationUsageDistanceCase.java new file mode 100644 index 0000000..5c962a1 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/VariableDeclarationUsageDistanceCase.java @@ -0,0 +1,25 @@ +public class VariableDeclarationUsageDistanceCase { + + public void foo1() { + int num; // violation, distance = 4 + final double PI; // OK, final variables not checked + System.out.println("Statement 1"); + System.out.println("Statement 2"); + System.out.println("Statement 3"); + num = 1; + PI = 3.14; + } + + public void foo2() { + int a; // OK, used in different scope + int b; // OK, used in different scope + int count = 0; // OK, used in different scope + + { + System.out.println("Inside inner scope"); + a = 1; + b = 2; + count++; + } + } +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/VisibilityModifierCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/VisibilityModifierCase.java new file mode 100644 index 0000000..7b35bfe --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/VisibilityModifierCase.java @@ -0,0 +1,40 @@ +class Example4 { + private int myPrivateField1; + + int field1; // violation, must have visibility modifier 'must be private' + + protected String field2; // violation, protected not allowed 'must be private' + + // violation below, not final nor matching pattern 'must be private' + public int field3 = 42; + + // violation below, doesn't match the pattern 'must be private' + public long serialVersionUID = 1L; + + public static final int field4 = 42; + + // violation below, public immutable fields are not allowed 'must be private' + public final int field5 = 42; + + // violation below, public immutable fields are not allowed 'must be private' + public final java.lang.String notes = null; + + // violation below, HashSet is mutable 'must be private' + public final Set mySet1 = new HashSet<>(); + + // violation below, immutable type not in config 'must be private' + public final ImmutableSet mySet2 = null; + + // violation below, immutable type not in config 'must be private' + public final ImmutableMap objects1 = null; + + @java.lang.Deprecated + String annotatedString; // violation, annotation not configured 'must be private' + + @Deprecated + // violation below, annotation not configured 'must be private' + String shortCustomAnnotated; + + @com.google.common.annotations.VisibleForTesting + public String testString = ""; +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml b/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml deleted file mode 100644 index 75e60e6..0000000 --- a/component/CoceInspector/code_inspector/src/test/resources/google_checks.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -- Gitee From e380603a6e2b886c1dba1fa1671dcfe40f5a65bb Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Tue, 16 Jul 2024 09:38:50 +0800 Subject: [PATCH 07/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9checkstyle=EF=BC=8C?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CoceInspector/code_inspector/build.gradle | 37 +++++++++++++++++++ component/CoceInspector/settings.gradle | 11 ++++++ 2 files changed, 48 insertions(+) create mode 100644 component/CoceInspector/code_inspector/build.gradle create mode 100644 component/CoceInspector/settings.gradle diff --git a/component/CoceInspector/code_inspector/build.gradle b/component/CoceInspector/code_inspector/build.gradle new file mode 100644 index 0000000..e351348 --- /dev/null +++ b/component/CoceInspector/code_inspector/build.gradle @@ -0,0 +1,37 @@ +plugins{ + id "application" +} + +application{ + mainClass='com.huawei.devkit.code.inspector.CodeInspector' +} + +compileJava{ + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 +} + +repositories { + maven{ + url "https://repo.huaweicloud.com/repository/maven/" + } +} + +dependencies { + implementation 'commons-codec:commons-codec:1.13' + implementation ('com.puppycrawl.tools:checkstyle:10.17.0'){ + exclude module: 'commons-codec' + } + implementation 'org.xerial:sqlite-jdbc:3.45.1.0' + implementation 'org.mybatis:mybatis:3.5.13' + implementation 'org.apache.logging.log4j:log4j-api:2.17.0' + implementation 'org.apache.logging.log4j:log4j-core:2.17.0' + compileOnly 'org.projectlombok:lombok:1.18.28' + annotationProcessor 'org.projectlombok:lombok:1.18.28' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' +} + +test{ + useJUnitPlatform() +} \ No newline at end of file diff --git a/component/CoceInspector/settings.gradle b/component/CoceInspector/settings.gradle new file mode 100644 index 0000000..9123454 --- /dev/null +++ b/component/CoceInspector/settings.gradle @@ -0,0 +1,11 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.8/userguide/multi_project_builds.html in the Gradle documentation. + */ + +rootProject.name = 'CodeInspector' + +include "code_inspector" +project(":code_inspector").name="code-inspector" \ No newline at end of file -- Gitee From 069ec98141fc5c367f2cd48236ad357a15a82c89 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Tue, 16 Jul 2024 10:02:46 +0800 Subject: [PATCH 08/25] =?UTF-8?q?=E8=A7=84=E8=8C=83=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devkit/code/inspector/wrappers/CheckStyleWrapper.java | 3 ++- .../src/test/resources/case/IllegalCatchCase.java | 6 +++--- .../src/test/resources/case/MagicNumberCase.java | 2 +- .../src/test/resources/case/OneStatementPerLineCase.java | 5 +++-- .../src/test/resources/case/OneTopLevelClassCase.java | 2 +- .../resources/case/OverloadMethodsDeclarationOrderCase.java | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java index 8162d9d..9a73717 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -73,9 +73,10 @@ public class CheckStyleWrapper { errorCounter = runCheckstyle(cliOptions, filesToProcess); } catch (CheckstyleException ex) { errorCounter = 1; + logger.error(ex.getMessage(), ex); } catch (Throwable ex) { errorCounter = 1; - logger.error("xxxx"); + logger.error(ex.getMessage(), ex); } finally { if (errorCounter > 0) { final LocalizedMessage errorCounterViolation = new LocalizedMessage( diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java index ea16a06..fbeb73d 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java +++ b/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java @@ -10,13 +10,13 @@ public class IllegalCatchCase { // some code here } catch (ArithmeticException e) { // OK - } catch (RuntimeException e) { // violation, catching Exception is illegal - and order of catch blocks doesn't matter + } catch (RuntimeException e) { // violation, catching Exception is illegal and order of catch blocks doesn't matter + } try { // some code here - } catch (NullPointerException) { // violation, catching Exception is illegal + } catch (NullPointerException e) { // violation, catching Exception is illegal } diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java index beff8ff..7f5f984 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java +++ b/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java @@ -1,6 +1,6 @@ @MyAnnotation(6) // violation class MagicNumberCase { - private field = 7; // violation + private int field = 7; // violation void foo() { int i = i + 1; // no violation diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/OneStatementPerLineCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/OneStatementPerLineCase.java index 28d6c85..146cab8 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/case/OneStatementPerLineCase.java +++ b/component/CoceInspector/code_inspector/src/test/resources/case/OneStatementPerLineCase.java @@ -1,3 +1,5 @@ +import java.io.EOFException; import java.io.BufferedReader; +;; //two empty statements on the same line. public class OneStatementPerLineCase { public void test(){ //Each line causes violation: @@ -6,8 +8,7 @@ public class OneStatementPerLineCase { int var1 = 1; int var2 = 2; var1++; var2++; Object obj1 = new Object(); Object obj2 = new Object(); - import java.io.EOFException; import java.io.BufferedReader; - ;; //two empty statements on the same line. + //Multi-line statements: int var1 = 1 diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/OneTopLevelClassCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/OneTopLevelClassCase.java index 8c45754..b0bda9f 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/case/OneTopLevelClassCase.java +++ b/component/CoceInspector/code_inspector/src/test/resources/case/OneTopLevelClassCase.java @@ -10,6 +10,6 @@ class Foo2 { // violation, second top-level class // methods } -record Foo3 { // violation, third top-level "class" +record Foo3 () {// violation, third top-level "class" // methods } \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/OverloadMethodsDeclarationOrderCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/OverloadMethodsDeclarationOrderCase.java index 4f5190c..c255ec8 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/case/OverloadMethodsDeclarationOrderCase.java +++ b/component/CoceInspector/code_inspector/src/test/resources/case/OverloadMethodsDeclarationOrderCase.java @@ -5,5 +5,5 @@ public class OverloadMethodsDeclarationOrderCase { public void foo(String s, int i) {} public void notFoo() {} // violation. Have to be after foo(String s, int i) public void foo(int i, String s) {} - private interface ExampleInterface() {} + private interface ExampleInterface {} } \ No newline at end of file -- Gitee From 76de1313cff41175869ab5586263cb5144e8551e Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Tue, 16 Jul 2024 17:31:25 +0800 Subject: [PATCH 09/25] =?UTF-8?q?=E8=A7=84=E8=8C=83=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devkit/code/inspector/CodeInspector.java | 2 +- .../inspector/perload/DataBasePreLoad.java | 6 + .../inspector/wrappers/CheckStyleWrapper.java | 3 - .../code/inspector/CodeInspectorTest.java | 67 +++++- .../devkit/code/inspector/JavadocTest.java | 196 ++++++++++++++++++ .../src/test/resources/annotationlocation.xml | 5 + .../CodeInspectorTestCase.java | 0 .../annotations/SuppressWarningsCase.java | 0 .../AvoidNestedBlocksCase.java | 0 .../EmptyCatchBlockCase.java | 0 .../{ => block_checks}/LeftCurlyCase.java | 0 .../{ => block_checks}/NeedBracesCase.java | 0 .../RightCurlyAloneCase.java | 0 .../RightCurlySameCase.java | 0 .../OneTopLevelClassCase.java | 0 .../{ => class_design}/ThrowsCountCase.java | 0 .../VisibilityModifierCase.java | 0 .../ConstructorsDeclarationGroupingCase.java | 0 .../{ => coding}/CovariantEqualsCase.java | 0 .../{ => coding}/DeclarationOrderCase.java | 0 .../{ => coding}/DefaultComesLastCase.java | 0 .../case/{ => coding}/EmptyStatementCase.java | 0 .../{ => coding}/EqualsAvoidNullCase.java | 0 .../case/{ => coding}/EqualsHashCodeCase.java | 0 .../case/{ => coding}/FallThroughCase.java | 0 .../case/{ => coding}/HiddenFieldCase.java | 0 .../case/{ => coding}/IllegalCatchCase.java | 0 .../IllegalInstantiationCase.java | 0 .../case/{ => coding}/InnerAssignment.java | 0 .../case/{ => coding}/MagicNumberCase.java | 0 .../MissingSwitchDefaultCase.java | 0 .../ModifiedControlVariableCase.java | 0 .../{ => coding}/MultipleStringLiterals.java | 0 .../MultipleVariableDeclarations.java | 0 .../case/{ => coding}/NestedForDepth.java | 0 .../case/{ => coding}/NestedIfDepthCase.java | 0 .../case/{ => coding}/NestedTryDepthCase.java | 0 .../case/{ => coding}/NoCloneCase.java | 0 .../case/{ => coding}/NoFinalizerCase.java | 0 .../{ => coding}/OneStatementPerLineCase.java | 0 .../OverloadMethodsDeclarationOrderCase.java | 0 .../{ => coding}/ParameterAssignmentCase.java | 0 .../SimplifyBooleanExpressionCase.java | 0 .../SimplifyBooleanReturnCase.java | 0 .../StringLiteralEqualityCase.java | 0 .../case/{ => coding}/SuperCloneCase.java | 0 .../case/{ => coding}/SuperFinalizeCase.java | 0 ...emicolonAfterOuterTypeDeclarationCase.java | 0 ...micolonAfterTypeMemberDeclarationCase.java | 0 ...essarySemicolonInTryWithResourcesCase.java | 0 .../{ => coding}/UnusedLocalVariableCase.java | 0 .../VariableDeclarationUsageDistanceCase.java | 0 .../AvoidStarImportCase.java | 8 + .../CustomImportOrderCase.java | 9 + .../RedundantImportCase.java | 14 ++ .../headers_and_imports/RegexpHeaderCase.java | 9 + .../UnusedImportsCase.java | 27 +++ .../case/javadoc/AtclauseOrderCase.java | 43 ++++ .../javadoc/InvalidJavadocPositionCase.java | 13 ++ .../javadoc/JavadocBlockTagLocationCase.java | 27 +++ .../javadoc/JavadocContentLocationCase.java | 22 ++ .../case/javadoc/JavadocMethodCase.java | 34 +++ .../JavadocMissingLeadingAsteriskCase.java | 42 ++++ ...docMissingWhitespaceAfterAsteriskCase.java | 22 ++ .../case/javadoc/JavadocParagraphCase.java | 18 ++ ...JavadocTagContinuationIndentationCase.java | 12 ++ .../case/javadoc/JavadocVariableCase.java | 18 ++ .../javadoc/MissingJavadocMethodCase.java | 14 ++ .../case/javadoc/MissingJavadocTypeCase.java | 8 + .../NonEmptyAtclauseDescriptionCase.java | 34 +++ ...quireEmptyLineBeforeBlockTagGroupCase.java | 10 + .../case/javadoc/SingleLineJavadocCase.java | 32 +++ .../resources/case/javadoc/WriteTagCase.java | 11 + .../annotations/AnnotationLocation.xml | 156 ++++++++++++++ .../annotations/SuppressWarnings.xml | 22 ++ .../block_checks/AvoidNestedBlocks.xml | 20 ++ .../single_rules/block_checks/EmptyBlock.xml | 25 +++ .../single_rules/block_checks/LeftCurly.xml | 27 +++ .../single_rules/block_checks/NeedBraces.xml | 18 ++ .../single_rules/block_checks/RightCurly.xml | 29 +++ .../class_design/OneTopLevelClass.xml | 18 ++ .../single_rules/class_design/ThrowsCount.xml | 20 ++ .../class_design/VisibilityModifier.xml | 20 ++ .../headers_and_imports/AvoidStarImport.xml | 19 ++ .../headers_and_imports/CustomImportOrder.xml | 22 ++ .../headers_and_imports/ImportOrder.xml | 25 +++ .../headers_and_imports/RedundantImport.xml | 20 ++ .../headers_and_imports/RegexpHeader.xml | 19 ++ .../headers_and_imports/UnusedImports.xml | 21 ++ .../single_rules/javadoc/AtclauseOrder.xml | 20 ++ .../javadoc/InvalidJavadocPosition.xml | 17 ++ .../javadoc/JavadocBlockTagLocation.xml | 17 ++ .../javadoc/JavadocContentLocation.xml | 21 ++ .../single_rules/javadoc/JavadocMethod.xml | 24 +++ .../javadoc/JavadocMissingLeadingAsterisk.xml | 21 ++ .../JavadocMissingWhitespaceAfterAsterisk.xml | 21 ++ .../single_rules/javadoc/JavadocParagraph.xml | 21 ++ .../JavadocTagContinuationIndentation.xml | 21 ++ .../single_rules/javadoc/JavadocVariable.xml | 23 ++ .../javadoc/MissingJavadocMethod.xml | 24 +++ .../javadoc/MissingJavadocType.xml | 26 +++ .../javadoc/NonEmptyAtclauseDescription.xml | 22 ++ .../RequireEmptyLineBeforeBlockTagGroup.xml | 22 ++ .../javadoc/SingleLineJavadoc.xml | 22 ++ .../single_rules/javadoc/WriteTag.xml | 23 ++ 105 files changed, 1524 insertions(+), 8 deletions(-) create mode 100644 component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java rename component/CoceInspector/code_inspector/src/test/resources/case/{ => annotations}/CodeInspectorTestCase.java (100%) create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java rename component/CoceInspector/code_inspector/src/test/resources/case/{ => block_checks}/AvoidNestedBlocksCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => block_checks}/EmptyCatchBlockCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => block_checks}/LeftCurlyCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => block_checks}/NeedBracesCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => block_checks}/RightCurlyAloneCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => block_checks}/RightCurlySameCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => class_design}/OneTopLevelClassCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => class_design}/ThrowsCountCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => class_design}/VisibilityModifierCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/ConstructorsDeclarationGroupingCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/CovariantEqualsCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/DeclarationOrderCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/DefaultComesLastCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/EmptyStatementCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/EqualsAvoidNullCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/EqualsHashCodeCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/FallThroughCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/HiddenFieldCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/IllegalCatchCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/IllegalInstantiationCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/InnerAssignment.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/MagicNumberCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/MissingSwitchDefaultCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/ModifiedControlVariableCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/MultipleStringLiterals.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/MultipleVariableDeclarations.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/NestedForDepth.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/NestedIfDepthCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/NestedTryDepthCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/NoCloneCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/NoFinalizerCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/OneStatementPerLineCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/OverloadMethodsDeclarationOrderCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/ParameterAssignmentCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/SimplifyBooleanExpressionCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/SimplifyBooleanReturnCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/StringLiteralEqualityCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/SuperCloneCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/SuperFinalizeCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/UnnecessarySemicolonInTryWithResourcesCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/UnusedLocalVariableCase.java (100%) rename component/CoceInspector/code_inspector/src/test/resources/case/{ => coding}/VariableDeclarationUsageDistanceCase.java (100%) create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml create mode 100644 component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java index 676acc5..4d4b4e7 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -39,6 +39,6 @@ public class CodeInspector { status = -1; logger.error("error", ex); } -// Runtime.getRuntime().exit(status); + Runtime.getRuntime().exit(status); } } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java index b452c5a..b270463 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java @@ -24,6 +24,12 @@ public class DataBasePreLoad { return sqlSessionFactory.openSession(); } + /** + * 预处理 + * + * @param properties 属性 + * @throws IOException 异常 + */ public static void preload(Properties properties) throws IOException { try (InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");) { sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, properties); diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java index 9a73717..08d6081 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -74,9 +74,6 @@ public class CheckStyleWrapper { } catch (CheckstyleException ex) { errorCounter = 1; logger.error(ex.getMessage(), ex); - } catch (Throwable ex) { - errorCounter = 1; - logger.error(ex.getMessage(), ex); } finally { if (errorCounter > 0) { final LocalizedMessage errorCounterViolation = new LocalizedMessage( diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java index 9303891..7985bce 100644 --- a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java @@ -3,13 +3,72 @@ package com.huawei.devkit.code.inspector; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.Objects; + public class CodeInspectorTest { @Test void test01() { String root = System.getProperty("user.dir"); - String path = this.getClass().getClassLoader().getResource("case/CodeInspectorTestCase.java").getPath(); - Assertions.assertDoesNotThrow(() -> { - }); - System.out.println(); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/annotations/CodeInspectorTestCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("annotationlocation.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/test01.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testRegexpHeader() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/headers_and_imports/RegexpHeaderCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/headers_and_imports/RegexpHeader.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testRegexpHeader.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testAvoidStarImport() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/headers_and_imports/AvoidStarImportCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/headers_and_imports/AvoidStarImport.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testAvoidStarImport.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testCustomImportOrderRules() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/headers_and_imports/CustomImportOrderCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/headers_and_imports/CustomImportOrder.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testCustomImportOrderRules.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testUnusedImports() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/UnusedImportsCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/headers_and_imports/UnusedImports.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testUnusedImports.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testRedundantImport() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/headers_and_imports/RedundantImportCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/headers_and_imports/RedundantImport.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testRedundantImport.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } } diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java new file mode 100644 index 0000000..6cd761a --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java @@ -0,0 +1,196 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Objects; + +/** + * JavadocTest + * + * @since 2024-07-16 + */ +public class JavadocTest { + @Test + void testAtclauseOrder() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/AtclauseOrderCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/AtclauseOrder.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testAtclauseOrder.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testInvalidJavadocPosition() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/InvalidJavadocPositionCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/InvalidJavadocPosition.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testInvalidJavadocPosition.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testJavadocBlockTagLocation() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocBlockTagLocationCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocBlockTagLocation.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocBlockTagLocation.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testJavadocContentLocation() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocContentLocationCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocContentLocation.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocContentLocation.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testJavadocMethod() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocMethodCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocMethod.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMethod.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testJavadocMissingLeadingAsterisk() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocMissingLeadingAsteriskCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocMissingLeadingAsterisk.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMissingLeadingAsterisk.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testJavadocMissingWhitespaceAfterAsterisk() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMissingWhitespaceAfterAsterisk.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testJavadocParagraph() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocParagraphCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocParagraph.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocParagraph.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + + @Test + void testJavadocTagContinuationIndentation() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocTagContinuationIndentationCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocTagContinuationIndentation.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocTagContinuationIndentation.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testJavadocVariable() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/JavadocVariableCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/JavadocVariable.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocVariable.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testMissingJavadocMethod() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/MissingJavadocMethodCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/MissingJavadocMethod.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testMissingJavadocMethod.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + + @Test + void testMissingJavadocType() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/MissingJavadocTypeCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/MissingJavadocType.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testMissingJavadocType.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testNonEmptyAtclauseDescription() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/NonEmptyAtclauseDescriptionCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/NonEmptyAtclauseDescription.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testNonEmptyAtclauseDescription.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testRequireEmptyLineBeforeBlockTagGroup() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testRequireEmptyLineBeforeBlockTagGroup.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testSingleLineJavadoc() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/SingleLineJavadocCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/SingleLineJavadoc.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testSingleLineJavadoc.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testWriteTag() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/javadoc/WriteTagCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/javadoc/WriteTag.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testWriteTag.out", "-f", "sarif", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml b/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml index 588bef4..cee067b 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml +++ b/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml @@ -205,7 +205,12 @@ + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/CodeInspectorTestCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java new file mode 100644 index 0000000..e69de29 diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/AvoidNestedBlocksCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/AvoidNestedBlocksCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/AvoidNestedBlocksCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/block_checks/AvoidNestedBlocksCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EmptyCatchBlockCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/EmptyCatchBlockCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/EmptyCatchBlockCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/block_checks/EmptyCatchBlockCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/LeftCurlyCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/LeftCurlyCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/LeftCurlyCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/block_checks/LeftCurlyCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NeedBracesCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/NeedBracesCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/NeedBracesCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/block_checks/NeedBracesCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlyAloneCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlyAloneCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/RightCurlyAloneCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlyAloneCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/RightCurlySameCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlySameCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/RightCurlySameCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlySameCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/OneTopLevelClassCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/class_design/OneTopLevelClassCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/OneTopLevelClassCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/class_design/OneTopLevelClassCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/ThrowsCountCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/class_design/ThrowsCountCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/ThrowsCountCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/class_design/ThrowsCountCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/VisibilityModifierCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/class_design/VisibilityModifierCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/VisibilityModifierCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/class_design/VisibilityModifierCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/ConstructorsDeclarationGroupingCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/ConstructorsDeclarationGroupingCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/ConstructorsDeclarationGroupingCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/ConstructorsDeclarationGroupingCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/CovariantEqualsCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/CovariantEqualsCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/CovariantEqualsCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/CovariantEqualsCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/DeclarationOrderCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/DeclarationOrderCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/DeclarationOrderCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/DeclarationOrderCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/DefaultComesLastCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/DefaultComesLastCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/DefaultComesLastCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/DefaultComesLastCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EmptyStatementCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/EmptyStatementCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/EmptyStatementCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/EmptyStatementCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EqualsAvoidNullCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsAvoidNullCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/EqualsAvoidNullCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsAvoidNullCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/EqualsHashCodeCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsHashCodeCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/EqualsHashCodeCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsHashCodeCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/FallThroughCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/FallThroughCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/FallThroughCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/FallThroughCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/HiddenFieldCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/HiddenFieldCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/HiddenFieldCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/HiddenFieldCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalCatchCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/IllegalCatchCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalCatchCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/IllegalInstantiationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalInstantiationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/IllegalInstantiationCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalInstantiationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/InnerAssignment.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/InnerAssignment.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/InnerAssignment.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/InnerAssignment.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/MagicNumberCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/MagicNumberCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/MagicNumberCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MissingSwitchDefaultCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/MissingSwitchDefaultCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/MissingSwitchDefaultCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/MissingSwitchDefaultCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/ModifiedControlVariableCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/ModifiedControlVariableCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/ModifiedControlVariableCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/ModifiedControlVariableCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MultipleStringLiterals.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleStringLiterals.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/MultipleStringLiterals.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleStringLiterals.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/MultipleVariableDeclarations.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleVariableDeclarations.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/MultipleVariableDeclarations.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleVariableDeclarations.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NestedForDepth.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedForDepth.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/NestedForDepth.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedForDepth.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NestedIfDepthCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedIfDepthCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/NestedIfDepthCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedIfDepthCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NestedTryDepthCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedTryDepthCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/NestedTryDepthCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedTryDepthCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NoCloneCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/NoCloneCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/NoCloneCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/NoCloneCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/NoFinalizerCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/NoFinalizerCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/NoFinalizerCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/NoFinalizerCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/OneStatementPerLineCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/OneStatementPerLineCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/OneStatementPerLineCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/OneStatementPerLineCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/OverloadMethodsDeclarationOrderCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/OverloadMethodsDeclarationOrderCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/OverloadMethodsDeclarationOrderCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/OverloadMethodsDeclarationOrderCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/ParameterAssignmentCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/ParameterAssignmentCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/ParameterAssignmentCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/ParameterAssignmentCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanExpressionCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanExpressionCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanExpressionCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanExpressionCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanReturnCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanReturnCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/SimplifyBooleanReturnCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanReturnCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/StringLiteralEqualityCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/StringLiteralEqualityCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/StringLiteralEqualityCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/StringLiteralEqualityCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SuperCloneCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperCloneCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/SuperCloneCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperCloneCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/SuperFinalizeCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperFinalizeCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/SuperFinalizeCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperFinalizeCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonInTryWithResourcesCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonInTryWithResourcesCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/UnnecessarySemicolonInTryWithResourcesCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonInTryWithResourcesCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/UnusedLocalVariableCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnusedLocalVariableCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/UnusedLocalVariableCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/UnusedLocalVariableCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/VariableDeclarationUsageDistanceCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/coding/VariableDeclarationUsageDistanceCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/VariableDeclarationUsageDistanceCase.java rename to component/CoceInspector/code_inspector/src/test/resources/case/coding/VariableDeclarationUsageDistanceCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java new file mode 100644 index 0000000..98cc5c9 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java @@ -0,0 +1,8 @@ +import java.util.Scanner; +import java.io.*; // violation +import static java.lang.Math.*; // violation +import java.util.*; // violation +import java.net.*; // violation + +public class AvoidStarImportCase { +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java new file mode 100644 index 0000000..72480ec --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java @@ -0,0 +1,9 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +import org.apache.commons.io.FileUtils; // OK + + +public class ImportOrderRulesCase { +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java new file mode 100644 index 0000000..e6c42c3 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +import static com.puppycrawl.tools.checkstyle.checks.imports.redundantimport.Example1.*; // OK, static import +import static java.lang.Integer.MAX_VALUE; // OK, static import + +// violation below, 'Redundant import from the same package' +import com.puppycrawl.tools.checkstyle.checks.imports.redundantimport.Example1; +import java.lang.String; // violation, "Redundant import from the java.lang package" +import java.util.Scanner; +import java.util.Scanner; // violation 'Duplicate import to line 18 - java.util.Scanner' + +public class RedundantImportCase{ } \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java new file mode 100644 index 0000000..f448f05 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java @@ -0,0 +1,9 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package demo + +import java.lang.System +public class RegexpHeaderCase { +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java new file mode 100644 index 0000000..f8bccea --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java @@ -0,0 +1,27 @@ +// limitation as it match field name in code +import java.awt.Component; //OK + +// no ability to recognize what import is not used +import static java.util.Map.copyOf; //OK +import static java.util.Arrays.copyOf; //OK + +import java.lang.String; // violation + +import java.util.Stack; +import java.util.Map; // violation + +import java.util.List; // violation +import java.util.function.Function; + +import static java.lang.Integer.parseInt; // violation + +/** + * {@link List} + */ +class UnusedImportsCase{ + Stack stack = new Stack(); + private Object Component; + int[] arr = {0,0}; + int[] array = copyOf(arr , 1); + Function stringToInteger = Integer::parseInt; +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java new file mode 100644 index 0000000..a860fcd --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +/** + * Some javadoc. + * + * @author Some javadoc. + * @version Some javadoc. + * @param Some javadoc. + * @return Some javadoc. + * @throws Some javadoc. + * @exception Some javadoc. + * @see Some javadoc. + * @since Some javadoc. + * @serial Some javadoc. + * @serialField + * @serialData + */ +public class Example1 {} + +class Valid1 implements Serializable {} + +/** + * Some javadoc. + * + * @since Some javadoc. + * @version Some javadoc. // violation + * @deprecated + * @see Some javadoc. // violation + */ +class Invalid1 implements Serializable {} + +/** + * Some javadoc. + * + * @since Some javadoc. + * @version Some javadoc. // violation + * @deprecated + * @see Some javadoc. // violation + * @author max // violation + */ +enum Test1 {} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java new file mode 100644 index 0000000..0406787 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +@SuppressWarnings("serial") +// violation below, 'Javadoc comment is placed in the wrong location' +/** + * This comment looks like Javadoc but it is at an invalid location. + * Therefore, the text will not get into TestClass.html. + * And, the check will produce a violation. + */ +public class InvalidJavadocPositionCase { +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java new file mode 100644 index 0000000..c354dbd --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java @@ -0,0 +1,27 @@ +/** + * Some javadoc. + * + * Some javadoc. @author + * @version Some javadoc. + * Some javadoc. @param + * @return Some javadoc. + * @throws Some javadoc. + * @exception Some javadoc. + * @see Some javadoc. + * @since Some javadoc. + * @serial Some javadoc. + * @serialField + * @serialData + */ +public class JavadocBlockTagLocationCase { + + /** + * + * obj @param + * xx @return + */ + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java new file mode 100644 index 0000000..cd0bea1 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class JavadocContentLocationCase { + + // violation below 'Javadoc content should start from the next line.' + /** This comment causes a violation because it starts from the first line + * and spans several lines. + */ + private int field1; + + /** + * This comment is OK because it starts from the second line. + */ + private int field12; + + /** This comment is OK because it is on the single-line. */ + private int field3; + + private int field4; +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java new file mode 100644 index 0000000..fbaecab --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class JavadocMethodCase { + + /** + * + */ + Test(int x) { // violation, param tag missing for x + } + + /** + * + */ + public int foo(int p1) { // violation, param tag missing for p1 + return p1; // violation, return tag missing + } + + /** + * + * @param p1 The first number + */ + @Deprecated + private int boo(int p1) { + return p1; // ok, only public methods checked + } + + /** + * + */ + void bar(int p1) { // violation, param tag missing for p1 + } // ok, no return tag for void method +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java new file mode 100644 index 0000000..f606695 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +/** + * Valid Java-style comment. + * + *
+ *   int value = 0;
+ * 
+ */ +class JavadocMissingLeadingAsteriskCase {} + +/** Valid Scala-style comment. + * Some description here. + **/ +class ScalaStyle {} + +/** ** + * Asterisks on first and last lines are optional. + * */ +class Asterisks {} + +/** No asterisks are required for single-line comments. */ +class SingleLine {} + +/** + + */ // violation above, 'Javadoc line should start with leading asterisk' +class BlankLine {} + +/** Wrapped + single-line comment */ +// violation above, 'Javadoc line should start with leading asterisk' +class Wrapped {} + +/** + *
+ int value; // violation, 'Javadoc line should start with leading asterisk'
+ * 
+ */ +class Example1 {} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java new file mode 100644 index 0000000..eb9b419 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +/** This is valid single-line Javadoc. */ +class JavadocMissingWhitespaceAfterAsteriskCase { + /** + *This is invalid Javadoc. + */ + int invalidJavaDoc; + /** + * This is valid Javadoc. + */ + void validJavaDocMethod() { + } + /**This is invalid single-line Javadoc. */ + void invalidSingleLineJavaDocMethod() { + } + /** This is valid single-line Javadoc. */ + void validSingleLineJavaDocMethod() { + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java new file mode 100644 index 0000000..3bed538 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +/** + * No tag (ok). + * + *

Tag immediately before the text (ok). + *

No blank line before the tag (violation). + * + *

+ * New line after tag (violation). + * + *

Whitespace after tag (violation). + * + */ +public class JavadocParagraphCase { +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java new file mode 100644 index 0000000..241eeb6 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java @@ -0,0 +1,12 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +/** + * @tag comment + * Indentation spacing is 1. Line with violation + * Indentation spacing is 2. Line with violation + * Indentation spacing is 4. OK + */ +public class JavadocTagContinuationIndentationCase { +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java new file mode 100644 index 0000000..d191c7f --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +import java.util.logging.Logger; + +public class JavadocVariableCase { + private int a; + + /** + * Some description here + */ + private int b; + public Logger logger; + protected int c;// violation + public int d; // violation + /*package*/ int e; +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java new file mode 100644 index 0000000..3fb3b90 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class MissingJavadocMethodCase { + private String text; + + public void test() {} // violation, method is missing javadoc + public String getText() { return text; } // OK + public void setText(String text) { this.text = text; } // OK + private void test1() {} // OK + void test2() {} // OK + protected void test3() {} // violation, method is missing javadoc +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java new file mode 100644 index 0000000..5883e9d --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java @@ -0,0 +1,8 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +public class MissingJavadocTypeCase {} // violation +private class PublicClass {} +protected class PublicClass {} // violation +class PackagePrivateClass {} diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java new file mode 100644 index 0000000..cf0c235 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +class NonEmptyAtclauseDescriptionCase +{ + // Violation for param "b" and at tags "deprecated", "throws" and "return". + /** + * Some summary. + * + * @param a Some description + * @param b + * @deprecated + * @throws Exception + * @return + */ + public int method(String a, int b) throws Exception { + return 1; + } + + // Violation for param "b" and at tags "deprecated", "throws" and "return". + /** + * Some summary. + * + * @param a Some description + * @param b + * @deprecated + * @throws Exception + * @return + */ + public int method(String a, int b) throws Exception { + return 1; + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java new file mode 100644 index 0000000..a9d36ba --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java @@ -0,0 +1,10 @@ +public class RequireEmptyLineBeforeBlockTagGroupCase { + /** + * testMethod's javadoc. + * @return something (violation) + */ + public boolean test() { + return false; + } +} + diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java new file mode 100644 index 0000000..985bd41 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java @@ -0,0 +1,32 @@ +public class SingleLineJavadocCase { + /** @see Math */ // violation, javadoc should be multiline + public int foo() { + return 42; + } + + /** + * @return 42 + */ // ok + public int bar() { + return 42; + } + + /** {@link #equals(Object)} */ // ok + public int baz() { + return 42; + } + + /** + *

the answer to the ultimate question + */ // ok + public int magic() { + return 42; + } + + /** + *

the answer to the ultimate question

+ */ // ok + public int foobar() { + return 42; + } +} \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java new file mode 100644 index 0000000..0ca813f --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java @@ -0,0 +1,11 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +/** + * Some class + */ +public class WriteTagCase { // violation as required tag is missed + /** some doc */ + void foo() {} // OK, as methods are not checked by default +} diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml new file mode 100644 index 0000000..9580bcb --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml new file mode 100644 index 0000000..2303327 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml new file mode 100644 index 0000000..fa7d214 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml new file mode 100644 index 0000000..b635734 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml new file mode 100644 index 0000000..3e79ccd --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml new file mode 100644 index 0000000..8d05ca1 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml new file mode 100644 index 0000000..d360f11 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml new file mode 100644 index 0000000..97faf3e --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml new file mode 100644 index 0000000..8d09a68 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml new file mode 100644 index 0000000..71ffa95 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml new file mode 100644 index 0000000..fda2942 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml new file mode 100644 index 0000000..68c90e0 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml new file mode 100644 index 0000000..6d81b43 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml new file mode 100644 index 0000000..be9a535 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml new file mode 100644 index 0000000..f5f0b3c --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml new file mode 100644 index 0000000..abddcdc --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml new file mode 100644 index 0000000..896f145 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml new file mode 100644 index 0000000..42db154 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml new file mode 100644 index 0000000..eacf1d0 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml new file mode 100644 index 0000000..4d675bf --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml new file mode 100644 index 0000000..d5ba2c9 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml new file mode 100644 index 0000000..aa2b6fc --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml new file mode 100644 index 0000000..b060f9d --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml new file mode 100644 index 0000000..9d24ef2 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml new file mode 100644 index 0000000..cca92b4 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml new file mode 100644 index 0000000..b4e710e --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml new file mode 100644 index 0000000..1a80486 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml new file mode 100644 index 0000000..54e4496 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml new file mode 100644 index 0000000..a5e7b6b --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml new file mode 100644 index 0000000..73602fd --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml new file mode 100644 index 0000000..debae0a --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml new file mode 100644 index 0000000..c4a21c7 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- Gitee From d83499d2a9a07a45f23e88b0598e11aedc62d10b Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Wed, 17 Jul 2024 10:25:02 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/log4j.properties | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 component/CoceInspector/code_inspector/src/main/resources/log4j.properties diff --git a/component/CoceInspector/code_inspector/src/main/resources/log4j.properties b/component/CoceInspector/code_inspector/src/main/resources/log4j.properties new file mode 100644 index 0000000..2d9480e --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/log4j.properties @@ -0,0 +1,21 @@ +# +# Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. +# +log4j.rootLogger=DEBUG,console,rollingFile +# console +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.Threshold=INFO +log4j.appender.console.ImmediateFlush=true +log4j.appender.console.Target=System.err +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=[%d{YYYY-MM-dd HH:mm:ss}] [%p] - %l - %m%n +# rollingFile +log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender +log4j.appender.rollingFile.Threshold=DEBUG +log4j.appender.rollingFile.ImmediateFlush=true +log4j.appender.rollingFile.Append=true +log4j.appender.rollingFile.File=${CODE_INSPECTOR_APP_HOME}/logs/code-inspector.log +log4j.appender.rollingFile.MaxFileSize=10MB +log4j.appender.rollingFile.MaxBackupIndex=50 +log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout +log4j.appender.rollingFile.layout.ConversionPattern=[%d{YYYY-MM-dd HH:mm:ss}] [%p] - %l - %m%n -- Gitee From fc59dcd2f9aaa9a54af0b4b913d23fb4b7592645 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Wed, 17 Jul 2024 10:28:53 +0800 Subject: [PATCH 11/25] =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=8C=85=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/content/config/devkit_checkstyle.xml | 224 ++++++++++++++++++ .../src/main/content/data/.gitkeep | 0 .../src/main/content/logs/.gitkeep | 0 .../devkit/code/inspector/CodeInspector.java | 34 +-- .../code/inspector/entity/CliOptions.java | 24 +- .../inspector/listener/DataBaseListener.java | 9 +- .../code/inspector/utils/PropertiesUtils.java | 11 +- .../inspector/wrappers/CheckStyleWrapper.java | 8 +- .../src/main/resources/config.properties | 2 +- .../src/main/resources/log4j2.xml | 22 -- .../src/main/resources/mybatis-config.xml | 2 +- .../resources/rule_sets/devkit_checkstyle.xml | 49 ---- 12 files changed, 265 insertions(+), 120 deletions(-) create mode 100644 component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml create mode 100644 component/CoceInspector/code_inspector/src/main/content/data/.gitkeep create mode 100644 component/CoceInspector/code_inspector/src/main/content/logs/.gitkeep delete mode 100644 component/CoceInspector/code_inspector/src/main/resources/log4j2.xml delete mode 100644 component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml diff --git a/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml b/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml new file mode 100644 index 0000000..8ceeb6f --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/component/CoceInspector/code_inspector/src/main/content/data/.gitkeep b/component/CoceInspector/code_inspector/src/main/content/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/component/CoceInspector/code_inspector/src/main/content/logs/.gitkeep b/component/CoceInspector/code_inspector/src/main/content/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java index 4d4b4e7..1dcd387 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -4,40 +4,44 @@ import com.huawei.devkit.code.inspector.entity.CliOptions; import com.huawei.devkit.code.inspector.perload.DataBasePreLoad; import com.huawei.devkit.code.inspector.utils.PropertiesUtils; import com.huawei.devkit.code.inspector.wrappers.CheckStyleWrapper; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import lombok.extern.slf4j.Slf4j; import picocli.CommandLine; import java.util.Properties; +@Slf4j public class CodeInspector { - private static final int EXIT_WITH_INVALID_USER_INPUT_CODE = -1; - - private static final Logger logger = LogManager.getLogger(CodeInspector.class); +// private static final Logger logger = LogManager.getLogger(CodeInspector.class); public static void main(String[] args) { int status = 0; try { - logger.info("start enter log"); final CliOptions cliOptions = new CliOptions(); final CommandLine commandLine = new CommandLine(cliOptions); commandLine.setUsageHelpWidth(CliOptions.HELP_WIDTH); commandLine.setCaseInsensitiveEnumValuesAllowed(true); - commandLine.parseArgs(args); - Properties properties = PropertiesUtils.loadProperties("config.properties"); - PropertiesUtils.configAndUpdate(properties); - DataBasePreLoad.preload(properties); - CheckStyleWrapper.checkStyle(cliOptions); + CommandLine.ParseResult parseResult = commandLine.parseArgs(args); + if (!CommandLine.printHelpIfRequested(parseResult)) { + log.info("start enter log"); + Properties properties = PropertiesUtils.loadProperties("config.properties"); + PropertiesUtils.configAndUpdate(properties); + log.info("start enter log"); + if (cliOptions.getConfigurationFile() == null || cliOptions.getConfigurationFile().isEmpty()) { + cliOptions.setConfigurationFile(PropertiesUtils.ROOT_DIR + "/config/devkit_checkstyle.xml"); + } + DataBasePreLoad.preload(properties); + CheckStyleWrapper.checkStyle(cliOptions); + } } catch (CommandLine.ParameterException ex) { status = -1; - logger.error("error", ex); + log.error("error", ex); System.err.println(ex.getMessage()); - System.err.println("Usage: checkstyle [OPTIONS]... FILES..."); - System.err.println("Try 'checkstyle --help' for more information."); + System.err.println("Usage: code-inspector [OPTIONS]... FILES..."); + System.err.println("Try 'code-inspector --help' for more information."); } catch (Exception ex) { status = -1; - logger.error("error", ex); + log.error("error", ex); } Runtime.getRuntime().exit(status); } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java index 458e3d4..e9c2759 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java @@ -7,6 +7,7 @@ package com.huawei.devkit.code.inspector.entity; import com.puppycrawl.tools.checkstyle.utils.CommonUtil; import lombok.Data; import picocli.CommandLine; +import picocli.CommandLine.Command; import java.io.File; import java.nio.file.Path; @@ -21,11 +22,12 @@ import java.util.stream.Collectors; * @since 2024-07-15 */ @Data +@Command(name = "code inspector", version = "1.0.1", mixinStandardHelpOptions = true) public class CliOptions { /** * Width of CLI help option. */ - public static final int HELP_WIDTH = 100; + public static final int HELP_WIDTH = 120; /** * The default number of threads to use for checker and the tree walker. @@ -42,10 +44,6 @@ public class CliOptions { */ private static final OutputStyle DEFAULT_OUTPUT_FORMAT = OutputStyle.PLAIN; - /** - * Option name for output format. - */ - private static final String OUTPUT_FORMAT_OPTION = "-f"; /** * The checker threads number. @@ -86,10 +84,6 @@ public class CliOptions { /** * Tab character length. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields */ @CommandLine.Option(names = {"-w", "--tabWidth"}, description = "Sets the length of the tab character. " @@ -109,10 +103,6 @@ public class CliOptions { /** * Output format. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields */ @CommandLine.Option(names = "-f", description = "Specifies the output format. Valid values: " @@ -122,10 +112,6 @@ public class CliOptions { /** * Option that allows users to specify a list of paths to exclude. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields */ @CommandLine.Option(names = {"-e", "--exclude"}, description = "Directory/file to exclude from CheckStyle. The path can be the " @@ -135,10 +121,6 @@ public class CliOptions { /** * Option that allows users to specify a regex of paths to exclude. - * - * @noinspection CanBeFinal - * @noinspectionreason CanBeFinal - we use picocli, and it uses - * reflection to manage such fields */ @CommandLine.Option(names = {"-x", "--exclude-regexp"}, description = "Directory/file pattern to exclude from CheckStyle. Multiple " diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java index e73a498..ec46b86 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java @@ -11,9 +11,8 @@ import com.huawei.devkit.code.inspector.perload.DataBasePreLoad; import com.puppycrawl.tools.checkstyle.api.AuditEvent; import com.puppycrawl.tools.checkstyle.api.AuditListener; import com.puppycrawl.tools.checkstyle.api.SeverityLevel; +import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.session.SqlSession; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import java.io.File; import java.io.IOException; @@ -28,9 +27,9 @@ import java.util.stream.Collectors; * * @since 2024-07-11 */ +@Slf4j public class DataBaseListener implements AuditListener { - private static final Logger logger = LogManager.getLogger(DataBaseListener.class); private final long time; private final String mergeId; private final List infoList; @@ -85,7 +84,7 @@ public class DataBaseListener implements AuditListener { @Override public void addException(AuditEvent event, Throwable throwable) { - logger.error("entry", throwable); + log.error("entry", throwable); } private void filledLine(String file, List infoList) { @@ -95,7 +94,7 @@ public class DataBaseListener implements AuditListener { info.setLine(lines.get(info.getLineno() - 1)); } } catch (IOException ex) { - logger.error("filled line", ex); + log.error("filled line", ex); } } } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java index ff0e25a..592cfc2 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java @@ -4,7 +4,7 @@ package com.huawei.devkit.code.inspector.utils; -import lombok.extern.log4j.Log4j2; +import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.io.Resources; import java.io.IOException; @@ -16,9 +16,10 @@ import java.util.Properties; * * @since 2024-07-11 */ -@Log4j2 +@Slf4j public class PropertiesUtils { + public static String ROOT_DIR; public static Properties loadProperties(String propertiesFile) { @@ -32,6 +33,12 @@ public class PropertiesUtils { } public static void configAndUpdate(Properties properties) { + String rootDir = System.getProperty("CODE_INSPECTOR_APP_HOME"); + if (rootDir != null && !rootDir.isEmpty()) { + ROOT_DIR = rootDir; + properties.setProperty("root.dir", ROOT_DIR); + return; + } String mode = properties.getProperty("mode"); if ("dev".equals(mode)) { ROOT_DIR = properties.getProperty("root.dir"); diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java index 08d6081..f93951e 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -26,8 +26,7 @@ import com.puppycrawl.tools.checkstyle.api.CheckstyleException; import com.puppycrawl.tools.checkstyle.api.Configuration; import com.puppycrawl.tools.checkstyle.api.RootModule; import com.puppycrawl.tools.checkstyle.utils.ChainedPropertyUtil; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; @@ -45,8 +44,9 @@ import java.util.regex.Pattern; * * @since 2024-07-11 */ + +@Slf4j public class CheckStyleWrapper { - private static final Logger logger = LogManager.getLogger(CheckStyleWrapper.class); /** * A key pointing to the error counter @@ -73,7 +73,7 @@ public class CheckStyleWrapper { errorCounter = runCheckstyle(cliOptions, filesToProcess); } catch (CheckstyleException ex) { errorCounter = 1; - logger.error(ex.getMessage(), ex); + log.error(ex.getMessage(), ex); } finally { if (errorCounter > 0) { final LocalizedMessage errorCounterViolation = new LocalizedMessage( diff --git a/component/CoceInspector/code_inspector/src/main/resources/config.properties b/component/CoceInspector/code_inspector/src/main/resources/config.properties index 75a4eef..c7c046f 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/config.properties +++ b/component/CoceInspector/code_inspector/src/main/resources/config.properties @@ -1,4 +1,4 @@ # #mode=product mode=dev -root.dir=/tmp/code_inspector \ No newline at end of file +root.dir=code_inspector/src/main/content \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/log4j2.xml b/component/CoceInspector/code_inspector/src/main/resources/log4j2.xml deleted file mode 100644 index 7cf97e2..0000000 --- a/component/CoceInspector/code_inspector/src/main/resources/log4j2.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml b/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml index fc3ca34..fd5a9a7 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml +++ b/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml @@ -8,7 +8,7 @@ - + diff --git a/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml b/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml deleted file mode 100644 index c42ab9c..0000000 --- a/component/CoceInspector/code_inspector/src/main/resources/rule_sets/devkit_checkstyle.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Gitee From bfb6e95dd515ad2cc4af9a2e9653f7607ab88ccb Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Wed, 17 Jul 2024 10:30:06 +0800 Subject: [PATCH 12/25] =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=8C=85=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CoceInspector/code_inspector/build.gradle | 55 ++++++++++++++++--- .../code/inspector/CodeInspectorTest.java | 2 + 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/component/CoceInspector/code_inspector/build.gradle b/component/CoceInspector/code_inspector/build.gradle index e351348..2d51cc3 100644 --- a/component/CoceInspector/code_inspector/build.gradle +++ b/component/CoceInspector/code_inspector/build.gradle @@ -1,37 +1,74 @@ -plugins{ +plugins { id "application" + id 'distribution' //打包tar包用到的插件 } -application{ - mainClass='com.huawei.devkit.code.inspector.CodeInspector' +application { + mainClass = 'com.huawei.devkit.code.inspector.CodeInspector' } -compileJava{ +startScripts { + defaultJvmOpts = ["-DCODE_INSPECTOR_APP_HOME=CODE_INSPECTOR_APP_HOME_PLACEHOLDERS"] + doLast { + unixScript.text = unixScript.text + .replace("DEFAULT_JVM_OPTS='\"-DCODE_INSPECTOR_APP_HOME=CODE_INSPECTOR_APP_HOME_PLACEHOLDERS\"'", + "DEFAULT_JVM_OPTS=\"-DCODE_INSPECTOR_APP_HOME=\$APP_HOME\"") + windowsScript.delete() + } +} + +distributions { + main { + var version = "1.0.0" + distributionBaseName = "code-inspector_${version}" + contents { + into("/code-inspector_${version}") { + from("src/main/content") { + include(["logs", "data", "config", "config/*.xml"]) + exclude("**/.gitkeep") + } + } + } + } +} + +distZip { + enabled = false +} + +distTar { + compression = Compression.GZIP + archiveExtension = "tar.gz" +} + + +compileJava { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } repositories { - maven{ + maven { url "https://repo.huaweicloud.com/repository/maven/" } } dependencies { implementation 'commons-codec:commons-codec:1.13' - implementation ('com.puppycrawl.tools:checkstyle:10.17.0'){ + implementation('com.puppycrawl.tools:checkstyle:10.17.0') { exclude module: 'commons-codec' } implementation 'org.xerial:sqlite-jdbc:3.45.1.0' implementation 'org.mybatis:mybatis:3.5.13' - implementation 'org.apache.logging.log4j:log4j-api:2.17.0' - implementation 'org.apache.logging.log4j:log4j-core:2.17.0' + implementation "org.slf4j:slf4j-api:1.7.32" + implementation "org.slf4j:slf4j-log4j12:1.7.32" + testImplementation 'org.mockito:mockito-core:4.11.0' compileOnly 'org.projectlombok:lombok:1.18.28' annotationProcessor 'org.projectlombok:lombok:1.18.28' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' } -test{ +test { useJUnitPlatform() } \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java index 7985bce..65e5400 100644 --- a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java @@ -9,6 +9,7 @@ public class CodeInspectorTest { @Test void test01() { String root = System.getProperty("user.dir"); + System.setProperty("CODE_INSPECTOR_APP_HOME", root + "/src/main/content"); String filePath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("case/annotations/CodeInspectorTestCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() @@ -20,6 +21,7 @@ public class CodeInspectorTest { @Test void testRegexpHeader() { String root = System.getProperty("user.dir"); + System.setProperty("CODE_INSPECTOR_APP_HOME", root + "/src/main/content"); String filePath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("case/headers_and_imports/RegexpHeaderCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() -- Gitee From a02cac6a20d3e366122cfb6e3ce6bc730a5aa329 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Wed, 17 Jul 2024 21:33:13 +0800 Subject: [PATCH 13/25] =?UTF-8?q?=E6=97=A5=E5=BF=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CoceInspector/code_inspector/build.gradle | 13 ++++---- .../src/main/content/config/log4j.properties | 21 +++++++++++++ .../devkit/code/inspector/CodeInspector.java | 6 ---- .../code/inspector/entity/CliOptions.java | 30 +++++++++---------- .../code/inspector/utils/PropertiesUtils.java | 1 - .../src/main/resources/config.properties | 2 +- .../src/main/resources/log4j.properties | 12 +------- 7 files changed, 45 insertions(+), 40 deletions(-) create mode 100644 component/CoceInspector/code_inspector/src/main/content/config/log4j.properties diff --git a/component/CoceInspector/code_inspector/build.gradle b/component/CoceInspector/code_inspector/build.gradle index 2d51cc3..00a8fff 100644 --- a/component/CoceInspector/code_inspector/build.gradle +++ b/component/CoceInspector/code_inspector/build.gradle @@ -8,11 +8,12 @@ application { } startScripts { - defaultJvmOpts = ["-DCODE_INSPECTOR_APP_HOME=CODE_INSPECTOR_APP_HOME_PLACEHOLDERS"] doLast { unixScript.text = unixScript.text - .replace("DEFAULT_JVM_OPTS='\"-DCODE_INSPECTOR_APP_HOME=CODE_INSPECTOR_APP_HOME_PLACEHOLDERS\"'", - "DEFAULT_JVM_OPTS=\"-DCODE_INSPECTOR_APP_HOME=\$APP_HOME\"") + .replace("DEFAULT_JVM_OPTS=\"\"", + "DEFAULT_JVM_OPTS=\"-DCODE_INSPECTOR_APP_HOME=\$APP_HOME " + + "-Dlog4j.configuration=file:\${APP_HOME}/config/log4j.properties\"" + ) windowsScript.delete() } } @@ -20,11 +21,11 @@ startScripts { distributions { main { var version = "1.0.0" - distributionBaseName = "code-inspector_${version}" + distributionBaseName = "code-inspector-${version}" contents { - into("/code-inspector_${version}") { + into("/code-inspector-${version}") { from("src/main/content") { - include(["logs", "data", "config", "config/*.xml"]) + include(["logs", "data", "config", "config/*.xml", "config/*.properties"]) exclude("**/.gitkeep") } } diff --git a/component/CoceInspector/code_inspector/src/main/content/config/log4j.properties b/component/CoceInspector/code_inspector/src/main/content/config/log4j.properties new file mode 100644 index 0000000..b83e3c1 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/content/config/log4j.properties @@ -0,0 +1,21 @@ +# +# Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. +# +log4j.rootLogger=DEBUG,console,rollingFile +# console +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.Threshold=WARN +log4j.appender.console.ImmediateFlush=true +log4j.appender.console.Target=System.err +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=[%d{YYYY-MM-dd HH:mm:ss}] [%p] - %l - %m%n +# rollingFile +log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender +log4j.appender.rollingFile.Threshold=INFO +log4j.appender.rollingFile.ImmediateFlush=true +log4j.appender.rollingFile.Append=true +log4j.appender.rollingFile.File=${CODE_INSPECTOR_APP_HOME}/logs/code-inspector.log +log4j.appender.rollingFile.MaxFileSize=10MB +log4j.appender.rollingFile.MaxBackupIndex=50 +log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout +log4j.appender.rollingFile.layout.ConversionPattern=[%d{YYYY-MM-dd HH:mm:ss}] [%p] - %l - %m%n diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java index 1dcd387..32aacf6 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -11,11 +11,8 @@ import java.util.Properties; @Slf4j public class CodeInspector { -// private static final Logger logger = LogManager.getLogger(CodeInspector.class); - public static void main(String[] args) { - int status = 0; try { final CliOptions cliOptions = new CliOptions(); final CommandLine commandLine = new CommandLine(cliOptions); @@ -34,15 +31,12 @@ public class CodeInspector { CheckStyleWrapper.checkStyle(cliOptions); } } catch (CommandLine.ParameterException ex) { - status = -1; log.error("error", ex); System.err.println(ex.getMessage()); System.err.println("Usage: code-inspector [OPTIONS]... FILES..."); System.err.println("Try 'code-inspector --help' for more information."); } catch (Exception ex) { - status = -1; log.error("error", ex); } - Runtime.getRuntime().exit(status); } } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java index e9c2759..19af5f4 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java @@ -22,7 +22,7 @@ import java.util.stream.Collectors; * @since 2024-07-15 */ @Data -@Command(name = "code inspector", version = "1.0.1", mixinStandardHelpOptions = true) +@Command(name = "code_inspector", version = "1.0.0", mixinStandardHelpOptions = true) public class CliOptions { /** * Width of CLI help option. @@ -79,26 +79,26 @@ public class CliOptions { /** * Properties file location. */ - @CommandLine.Option(names = "-p", description = "Sets the property files to load.") +// @CommandLine.Option(names = "-p", description = "Sets the property files to load.") private File propertiesFile; /** * Tab character length. */ - @CommandLine.Option(names = {"-w", "--tabWidth"}, - description = "Sets the length of the tab character. " - + "Used only with -s option. Default value is ${DEFAULT-VALUE}.") +// @CommandLine.Option(names = {"-w", "--tabWidth"}, +// description = "Sets the length of the tab character. " +// + "Used only with -s option. Default value is ${DEFAULT-VALUE}.") private int tabWidth = CommonUtil.DEFAULT_TAB_WIDTH; /** * Switch whether to generate suppressions file or not. */ - @CommandLine.Option(names = {"-g", "--generate-xpath-suppression"}, - description = "Generates to output a suppression xml to use to suppress all " - + "violations from user's config. Instead of printing every violation, " - + "all violations will be catched and single suppressions xml file will " - + "be printed out. Used only with -c option. Output " - + "location can be specified with -o option.") +// @CommandLine.Option(names = {"-g", "--generate-xpath-suppression"}, +// description = "Generates to output a suppression xml to use to suppress all " +// + "violations from user's config. Instead of printing every violation, " +// + "all violations will be catched and single suppressions xml file will " +// + "be printed out. Used only with -c option. Output " +// + "location can be specified with -o option.") private boolean generateXpathSuppressionsFile; /** @@ -114,7 +114,7 @@ public class CliOptions { * Option that allows users to specify a list of paths to exclude. */ @CommandLine.Option(names = {"-e", "--exclude"}, - description = "Directory/file to exclude from CheckStyle. The path can be the " + description = "Directory/file to exclude from CodeInspector. The path can be the " + "full, absolute path, or relative to the current path. Multiple " + "excludes are allowed.") private List exclude = new ArrayList<>(); @@ -123,15 +123,15 @@ public class CliOptions { * Option that allows users to specify a regex of paths to exclude. */ @CommandLine.Option(names = {"-x", "--exclude-regexp"}, - description = "Directory/file pattern to exclude from CheckStyle. Multiple " + description = "Directory/file pattern to exclude from CodeInspector. Multiple " + "excludes are allowed.") private List excludeRegex = new ArrayList<>(); /** * Switch whether to execute ignored modules or not. */ - @CommandLine.Option(names = {"-E", "--executeIgnoredModules"}, - description = "Allows ignored modules to be run.") +// @CommandLine.Option(names = {"-E", "--executeIgnoredModules"}, +// description = "Allows ignored modules to be run.") private boolean executeIgnoredModules; /** diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java index 592cfc2..aa914d8 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java @@ -19,7 +19,6 @@ import java.util.Properties; @Slf4j public class PropertiesUtils { - public static String ROOT_DIR; public static Properties loadProperties(String propertiesFile) { diff --git a/component/CoceInspector/code_inspector/src/main/resources/config.properties b/component/CoceInspector/code_inspector/src/main/resources/config.properties index c7c046f..55962a5 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/config.properties +++ b/component/CoceInspector/code_inspector/src/main/resources/config.properties @@ -1,4 +1,4 @@ # #mode=product mode=dev -root.dir=code_inspector/src/main/content \ No newline at end of file +root.dir=/home/z30027893/Workspace/devkit-pipeline/component/CoceInspector/code_inspector/src/main/content \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/log4j.properties b/component/CoceInspector/code_inspector/src/main/resources/log4j.properties index 2d9480e..d72be5f 100644 --- a/component/CoceInspector/code_inspector/src/main/resources/log4j.properties +++ b/component/CoceInspector/code_inspector/src/main/resources/log4j.properties @@ -1,7 +1,7 @@ # # Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. # -log4j.rootLogger=DEBUG,console,rollingFile +log4j.rootLogger=DEBUG,console # console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold=INFO @@ -9,13 +9,3 @@ log4j.appender.console.ImmediateFlush=true log4j.appender.console.Target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%d{YYYY-MM-dd HH:mm:ss}] [%p] - %l - %m%n -# rollingFile -log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender -log4j.appender.rollingFile.Threshold=DEBUG -log4j.appender.rollingFile.ImmediateFlush=true -log4j.appender.rollingFile.Append=true -log4j.appender.rollingFile.File=${CODE_INSPECTOR_APP_HOME}/logs/code-inspector.log -log4j.appender.rollingFile.MaxFileSize=10MB -log4j.appender.rollingFile.MaxBackupIndex=50 -log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout -log4j.appender.rollingFile.layout.ConversionPattern=[%d{YYYY-MM-dd HH:mm:ss}] [%p] - %l - %m%n -- Gitee From dc256ab9d4f055aeb5cd5df5cf3344202fd19d04 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 14:10:37 +0800 Subject: [PATCH 14/25] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=80=E7=A7=8D?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/content/config/devkit_checkstyle.xml | 96 ++++++++- .../code/inspector/entity/CliOptions.java | 30 +-- .../code/inspector/entity/OutputStyle.java | 7 + .../listener/CustomJsonFormatterLogger.java | 183 ++++++++++++++++++ ...aBaseListener.java => DataBaseLogger.java} | 8 +- .../code/inspector/utils/PropertiesUtils.java | 18 ++ .../inspector/wrappers/CheckStyleWrapper.java | 53 +---- .../resources/templates/CustomReport.template | 5 + .../templates/ResultErrorOnly.template | 4 + .../templates/ResultFileOnly.template | 5 + .../templates/ResultLineColumn.template | 8 + .../templates/ResultLineOnly.template | 7 + .../code/inspector/CodeInspectorTest.java | 4 +- .../src/test/resources/annotationlocation.xml | 1 + 14 files changed, 337 insertions(+), 92 deletions(-) create mode 100644 component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java rename component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/{DataBaseListener.java => DataBaseLogger.java} (92%) create mode 100644 component/CoceInspector/code_inspector/src/main/resources/templates/CustomReport.template create mode 100644 component/CoceInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template create mode 100644 component/CoceInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template create mode 100644 component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template create mode 100644 component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template diff --git a/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml b/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml index 8ceeb6f..0c2b849 100644 --- a/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml +++ b/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml @@ -205,19 +205,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + value="^/\*$\n^\s\*\sCopyright\s\([Cc]\)\s.*([0-9]{4}-)?[0-9]{4}.*\n^ \*/$\n\n^package\s.*\n\n^import.*"/>
diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java index 19af5f4..63ecf30 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java @@ -4,7 +4,6 @@ package com.huawei.devkit.code.inspector.entity; -import com.puppycrawl.tools.checkstyle.utils.CommonUtil; import lombok.Data; import picocli.CommandLine; import picocli.CommandLine.Command; @@ -34,11 +33,6 @@ public class CliOptions { */ private static final int DEFAULT_THREAD_COUNT = 1; - /** - * Name for the moduleConfig attribute 'tabWidth'. - */ - public static final String ATTRIB_TAB_WIDTH_NAME = "tabWidth"; - /** * Default output format. */ @@ -79,34 +73,14 @@ public class CliOptions { /** * Properties file location. */ -// @CommandLine.Option(names = "-p", description = "Sets the property files to load.") private File propertiesFile; - /** - * Tab character length. - */ -// @CommandLine.Option(names = {"-w", "--tabWidth"}, -// description = "Sets the length of the tab character. " -// + "Used only with -s option. Default value is ${DEFAULT-VALUE}.") - private int tabWidth = CommonUtil.DEFAULT_TAB_WIDTH; - - /** - * Switch whether to generate suppressions file or not. - */ -// @CommandLine.Option(names = {"-g", "--generate-xpath-suppression"}, -// description = "Generates to output a suppression xml to use to suppress all " -// + "violations from user's config. Instead of printing every violation, " -// + "all violations will be catched and single suppressions xml file will " -// + "be printed out. Used only with -c option. Output " -// + "location can be specified with -o option.") - private boolean generateXpathSuppressionsFile; - /** * Output format. */ @CommandLine.Option(names = "-f", description = "Specifies the output format. Valid values: " - + "${COMPLETION-CANDIDATES} for XMLLogger, SarifLogger, " + + "${COMPLETION-CANDIDATES} for XMLLogger, SarifLogger, CustomJsonFormatterLogger," + "and DefaultLogger respectively. Defaults to ${DEFAULT-VALUE}.") private OutputStyle format = DEFAULT_OUTPUT_FORMAT; @@ -130,8 +104,6 @@ public class CliOptions { /** * Switch whether to execute ignored modules or not. */ -// @CommandLine.Option(names = {"-E", "--executeIgnoredModules"}, -// description = "Allows ignored modules to be run.") private boolean executeIgnoredModules; /** diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java index b3eebc2..8eb6ac2 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java @@ -4,6 +4,7 @@ package com.huawei.devkit.code.inspector.entity; +import com.huawei.devkit.code.inspector.listener.CustomJsonFormatterLogger; import com.puppycrawl.tools.checkstyle.AbstractAutomaticBean; import com.puppycrawl.tools.checkstyle.DefaultLogger; import com.puppycrawl.tools.checkstyle.SarifLogger; @@ -28,6 +29,10 @@ public enum OutputStyle { * SARIF output format. */ SARIF, + /** + * Json output format + */ + JSON, /** * Plain output format. */ @@ -49,6 +54,8 @@ public enum OutputStyle { result = new XMLLogger(out, options); } else if (this == SARIF) { result = new SarifLogger(out, options); + } else if (this == JSON) { + result = new CustomJsonFormatterLogger(out, options); } else { result = new DefaultLogger(out, options); } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java new file mode 100644 index 0000000..8d0391b --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java @@ -0,0 +1,183 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + */ + +package com.huawei.devkit.code.inspector.listener; + +import com.huawei.devkit.code.inspector.utils.PropertiesUtils; +import com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.OutputStreamOptions; +import com.puppycrawl.tools.checkstyle.SarifLogger; +import com.puppycrawl.tools.checkstyle.api.AuditEvent; +import com.puppycrawl.tools.checkstyle.api.AuditListener; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * DataBaseListener + * + * @since 2024-07-11 + */ +@Slf4j +public class CustomJsonFormatterLogger implements AuditListener { + /** + * The placeholder for message. + */ + private static final String MESSAGE_PLACEHOLDER = "${message}"; + + /** + * The placeholder for severity level. + */ + private static final String SEVERITY_LEVEL_PLACEHOLDER = "${severityLevel}"; + + /** + * The placeholder for uri. + */ + private static final String URI_PLACEHOLDER = "${uri}"; + + /** + * The placeholder for line. + */ + private static final String LINE_PLACEHOLDER = "${line}"; + + /** + * The placeholder for column. + */ + private static final String COLUMN_PLACEHOLDER = "${column}"; + + /** + * The placeholder for rule id. + */ + private static final String RULE_ID_PLACEHOLDER = "${ruleId}"; + + /** + * The placeholder for results. + */ + private static final String RESULTS_PLACEHOLDER = "${results}"; + /** + * Helper writer that allows easy encoding and printing. + */ + private final PrintWriter writer; + + /** + * Close output stream in auditFinished. + */ + private final boolean closeStream; + /** + * Content for the entire report. + */ + private final String report; + + /** + * Content for result representing an error with source line and column. + */ + private final String resultLineColumn; + + /** + * Content for result representing an error with source line only. + */ + private final String resultLineOnly; + + /** + * Content for result representing an error with filename only and without source location. + */ + private final String resultFileOnly; + + /** + * Content for result representing an error without filename or location. + */ + private final String resultErrorOnly; + + private final List results = new ArrayList<>(); + + public CustomJsonFormatterLogger(OutputStream outputStream, + OutputStreamOptions outputStreamOptions) throws IOException { + writer = new PrintWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)); + closeStream = outputStreamOptions == OutputStreamOptions.CLOSE; + report = PropertiesUtils.readResource("templates/CustomReport.template"); + resultLineColumn = + PropertiesUtils.readResource("templates/ResultLineColumn.template"); + resultLineOnly = + PropertiesUtils.readResource("templates/ResultLineOnly.template"); + resultFileOnly = + PropertiesUtils.readResource("templates/ResultFileOnly.template"); + resultErrorOnly = + PropertiesUtils.readResource("templates/ResultErrorOnly.template"); + + } + + + @Override + public void auditStarted(AuditEvent event) { + + } + + @Override + public void auditFinished(AuditEvent event) { + final String rendered = report.replace(RESULTS_PLACEHOLDER, String.join(",\n", results)); + writer.print(rendered); + if (closeStream) { + writer.close(); + } else { + writer.flush(); + } + } + + @Override + public void fileStarted(AuditEvent event) { + + } + + @Override + public void fileFinished(AuditEvent event) { + + } + + @Override + public void addError(AuditEvent event) { + if (event.getColumn() > 0) { + results.add(resultLineColumn + .replace(SEVERITY_LEVEL_PLACEHOLDER, event.getSeverityLevel().getName()) + .replace(URI_PLACEHOLDER, event.getFileName()) + .replace(COLUMN_PLACEHOLDER, Integer.toString(event.getColumn())) + .replace(LINE_PLACEHOLDER, Integer.toString(event.getLine())) + .replace(MESSAGE_PLACEHOLDER, SarifLogger.escape(event.getMessage())) + .replace(RULE_ID_PLACEHOLDER, event.getViolation().getKey()) + ); + } else { + results.add(resultLineOnly + .replace(SEVERITY_LEVEL_PLACEHOLDER, event.getSeverityLevel().getName()) + .replace(URI_PLACEHOLDER, event.getFileName()) + .replace(LINE_PLACEHOLDER, Integer.toString(event.getLine())) + .replace(MESSAGE_PLACEHOLDER, SarifLogger.escape(event.getMessage())) + .replace(RULE_ID_PLACEHOLDER, event.getViolation().getKey()) + ); + } + } + + @Override + public void addException(AuditEvent event, Throwable throwable) { + final StringWriter stringWriter = new StringWriter(); + final PrintWriter printer = new PrintWriter(stringWriter); + throwable.printStackTrace(printer); + if (event.getFileName() == null) { + results.add(resultErrorOnly + .replace(SEVERITY_LEVEL_PLACEHOLDER, event.getSeverityLevel().getName()) + .replace(MESSAGE_PLACEHOLDER, SarifLogger.escape(stringWriter.toString())) + ); + } else { + results.add(resultFileOnly + .replace(SEVERITY_LEVEL_PLACEHOLDER, event.getSeverityLevel().getName()) + .replace(URI_PLACEHOLDER, event.getFileName()) + .replace(MESSAGE_PLACEHOLDER, SarifLogger.escape(stringWriter.toString())) + ); + } + } +} diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java similarity index 92% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java rename to component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java index ec46b86..0382b16 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseListener.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java @@ -28,13 +28,13 @@ import java.util.stream.Collectors; * @since 2024-07-11 */ @Slf4j -public class DataBaseListener implements AuditListener { +public class DataBaseLogger implements AuditListener { private final long time; private final String mergeId; private final List infoList; - public DataBaseListener(String mergeId) { + public DataBaseLogger(String mergeId) { this.infoList = new ArrayList<>(); this.mergeId = mergeId; this.time = System.currentTimeMillis(); @@ -54,9 +54,9 @@ public class DataBaseListener implements AuditListener { } try (SqlSession sqlSession = DataBasePreLoad.getSqlSession()) { RuleViolationInfoMapper mapper = sqlSession.getMapper(RuleViolationInfoMapper.class); - // todo 每100个执行一次 for (int i = 0; i < this.infoList.size(); i += 100) { - mapper.addRuleViolationInfos(this.infoList); + int endIndex = Math.min(i + 100, this.infoList.size()); + mapper.addRuleViolationInfos(this.infoList.subList(i, endIndex)); } sqlSession.commit(); } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java index aa914d8..d12eddc 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java @@ -7,8 +7,10 @@ package com.huawei.devkit.code.inspector.utils; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.io.Resources; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.Properties; /** @@ -47,4 +49,20 @@ public class PropertiesUtils { } } + public static String readResource(String name) throws IOException { + try (InputStream inputStream = Resources.getResourceAsStream(name); + ByteArrayOutputStream result = new ByteArrayOutputStream()) { + if (inputStream == null) { + throw new IOException("Cannot find the resource " + name); + } + final byte[] buffer = new byte[1024]; + int length = inputStream.read(buffer); + while (length != -1) { + result.write(buffer, 0, length); + length = inputStream.read(buffer); + } + return result.toString(StandardCharsets.UTF_8); + } + } + } diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java index f93951e..d811d1a 100644 --- a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java +++ b/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java @@ -6,11 +6,10 @@ package com.huawei.devkit.code.inspector.wrappers; import com.huawei.devkit.code.inspector.entity.CliOptions; import com.huawei.devkit.code.inspector.entity.OutputStyle; -import com.huawei.devkit.code.inspector.listener.DataBaseListener; +import com.huawei.devkit.code.inspector.listener.DataBaseLogger; import com.puppycrawl.tools.checkstyle.AbstractAutomaticBean; import com.puppycrawl.tools.checkstyle.Checker; import com.puppycrawl.tools.checkstyle.ConfigurationLoader; -import com.puppycrawl.tools.checkstyle.DefaultConfiguration; import com.puppycrawl.tools.checkstyle.Definitions; import com.puppycrawl.tools.checkstyle.LocalizedMessage; import com.puppycrawl.tools.checkstyle.Main; @@ -18,8 +17,6 @@ import com.puppycrawl.tools.checkstyle.ModuleFactory; import com.puppycrawl.tools.checkstyle.PackageObjectFactory; import com.puppycrawl.tools.checkstyle.PropertiesExpander; import com.puppycrawl.tools.checkstyle.ThreadModeSettings; -import com.puppycrawl.tools.checkstyle.XpathFileGeneratorAstFilter; -import com.puppycrawl.tools.checkstyle.XpathFileGeneratorAuditListener; import com.puppycrawl.tools.checkstyle.api.AuditEvent; import com.puppycrawl.tools.checkstyle.api.AuditListener; import com.puppycrawl.tools.checkstyle.api.CheckstyleException; @@ -79,7 +76,7 @@ public class CheckStyleWrapper { final LocalizedMessage errorCounterViolation = new LocalizedMessage( Definitions.CHECKSTYLE_BUNDLE, Main.class, ERROR_COUNTER, String.valueOf(errorCounter)); - System.err.println(errorCounterViolation.getMessage()); + log.error(errorCounterViolation.getMessage()); } } } @@ -164,7 +161,6 @@ public class CheckStyleWrapper { */ private static int runCheckstyle(CliOptions options, List filesToProcess) throws CheckstyleException, IOException { - // setup the properties final Properties props; if (options.getPropertiesFile() == null) { @@ -195,28 +191,10 @@ public class CheckStyleWrapper { final RootModule rootModule = getRootModule(config.getName(), moduleClassLoader); try { - final AuditListener listener; - if (options.isGenerateXpathSuppressionsFile()) { - // create filter to print generated xpath suppressions file - final Configuration treeWalkerConfig = getTreeWalkerConfig(config); - if (treeWalkerConfig != null) { - final DefaultConfiguration moduleConfig = - new DefaultConfiguration( - XpathFileGeneratorAstFilter.class.getName()); - moduleConfig.addProperty(CliOptions.ATTRIB_TAB_WIDTH_NAME, - String.valueOf(options.getTabWidth())); - ((DefaultConfiguration) treeWalkerConfig).addChild(moduleConfig); - } - - listener = new XpathFileGeneratorAuditListener(getOutputStream(options.getOutputPath()), - getOutputStreamOptions(options.getOutputPath())); - } else { - listener = createListener(options.getFormat(), options.getOutputPath()); - } - + final AuditListener listener = createListener(options.getFormat(), options.getOutputPath()); rootModule.setModuleClassLoader(moduleClassLoader); rootModule.configure(config); - DataBaseListener baseListener = new DataBaseListener(""); + DataBaseLogger baseListener = new DataBaseLogger(""); rootModule.addListener(listener); rootModule.addListener(baseListener); @@ -270,25 +248,6 @@ public class CheckStyleWrapper { return (RootModule) factory.createModule(name); } - /** - * Returns {@code TreeWalker} module configuration. - * - * @param config The configuration object. - * @return The {@code TreeWalker} module configuration. - */ - private static Configuration getTreeWalkerConfig(Configuration config) { - Configuration result = null; - - final Configuration[] children = config.getChildren(); - for (Configuration child : children) { - if ("TreeWalker".equals(child.getName())) { - result = child; - break; - } - } - return result; - } - /** * This method creates in AuditListener an open stream for validation data, it must be * closed by {@link RootModule} (default implementation is {@link Checker}) by calling @@ -313,11 +272,7 @@ public class CheckStyleWrapper { * @param outputPath output location * @return output stream * @throws IOException might happen - * @noinspection UseOfSystemOutOrSystemErr - * @noinspectionreason UseOfSystemOutOrSystemErr - driver class for Checkstyle requires - * usage of System.out and System.err */ - @SuppressWarnings("resource") private static OutputStream getOutputStream(Path outputPath) throws IOException { final OutputStream result; if (outputPath == null) { diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/CustomReport.template b/component/CoceInspector/code_inspector/src/main/resources/templates/CustomReport.template new file mode 100644 index 0000000..0e81f0c --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/templates/CustomReport.template @@ -0,0 +1,5 @@ +{ + result: [ +${results} + ] +} diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template new file mode 100644 index 0000000..700f737 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template @@ -0,0 +1,4 @@ + { + "level": "${severityLevel}", + "message": "${message}" + } \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template new file mode 100644 index 0000000..a6420e3 --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template @@ -0,0 +1,5 @@ + { + "level": "${severityLevel}", + "locations": "${uri}" + "message": "${message}" + } \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template new file mode 100644 index 0000000..e35c99c --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template @@ -0,0 +1,8 @@ + { + "level": "${severityLevel}", + "uri": "${uri}", + "startColumn": ${column}, + "startLine": ${line}, + "message": "${message}" + "ruleId": "${ruleId}" + } \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template new file mode 100644 index 0000000..02f264d --- /dev/null +++ b/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template @@ -0,0 +1,7 @@ + { + "level": "${severityLevel}", + "uri": "${uri}", + "startLine": ${line}, + "message": "${message}" + "ruleId": "${ruleId}" + } \ No newline at end of file diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java index 65e5400..d2e29ad 100644 --- a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java +++ b/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java @@ -14,7 +14,7 @@ public class CodeInspectorTest { .getResource("case/annotations/CodeInspectorTestCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("annotationlocation.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/test01.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/test01.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -56,7 +56,7 @@ public class CodeInspectorTest { void testUnusedImports() { String root = System.getProperty("user.dir"); String filePath = Objects.requireNonNull(this.getClass().getClassLoader() - .getResource("case/UnusedImportsCase.java")).getPath(); + .getResource("case/headers_and_imports/UnusedImportsCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/headers_and_imports/UnusedImports.xml")).getPath(); String[] args = new String[]{"-c", configPath, "-o", root + "/testUnusedImports.out", "-f", "sarif", filePath}; diff --git a/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml b/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml index cee067b..7c3dbba 100644 --- a/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml +++ b/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml @@ -205,6 +205,7 @@
+ -- Gitee From 83cf30fb38132dd87014372cf4b26a9870d3bbf9 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 14:14:08 +0800 Subject: [PATCH 15/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{CoceInspector => CodeInspector}/code_inspector/build.gradle | 0 .../code_inspector/src/main/content/config/devkit_checkstyle.xml | 0 .../code_inspector/src/main/content/config/log4j.properties | 0 .../code_inspector/src/main/content/data/.gitkeep | 0 .../code_inspector/src/main/content/logs/.gitkeep | 0 .../main/java/com/huawei/devkit/code/inspector/CodeInspector.java | 0 .../java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java | 0 .../huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java | 0 .../java/com/huawei/devkit/code/inspector/entity/CliOptions.java | 0 .../java/com/huawei/devkit/code/inspector/entity/OutputStyle.java | 0 .../huawei/devkit/code/inspector/entity/RuleViolationInfo.java | 0 .../devkit/code/inspector/listener/CustomJsonFormatterLogger.java | 0 .../com/huawei/devkit/code/inspector/listener/DataBaseLogger.java | 0 .../com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java | 0 .../com/huawei/devkit/code/inspector/utils/PropertiesUtils.java | 0 .../huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java | 0 .../code_inspector/src/main/resources/config.properties | 0 .../code_inspector/src/main/resources/log4j.properties | 0 .../code_inspector/src/main/resources/mappers/DataBaseMapper.xml | 0 .../src/main/resources/mappers/RuleViolationInfoMapper.xml | 0 .../code_inspector/src/main/resources/mybatis-config.xml | 0 .../src/main/resources/templates/CustomReport.template | 0 .../src/main/resources/templates/ResultErrorOnly.template | 0 .../src/main/resources/templates/ResultFileOnly.template | 0 .../src/main/resources/templates/ResultLineColumn.template | 0 .../src/main/resources/templates/ResultLineOnly.template | 0 .../java/com/huawei/devkit/code/inspector/CodeInspectorTest.java | 0 .../test/java/com/huawei/devkit/code/inspector/JavadocTest.java | 0 .../code_inspector/src/test/resources/annotationlocation.xml | 0 .../test/resources/case/annotations/CodeInspectorTestCase.java | 0 .../src/test/resources/case/annotations/SuppressWarningsCase.java | 0 .../test/resources/case/block_checks/AvoidNestedBlocksCase.java | 0 .../src/test/resources/case/block_checks/EmptyCatchBlockCase.java | 0 .../src/test/resources/case/block_checks/LeftCurlyCase.java | 0 .../src/test/resources/case/block_checks/NeedBracesCase.java | 0 .../src/test/resources/case/block_checks/RightCurlyAloneCase.java | 0 .../src/test/resources/case/block_checks/RightCurlySameCase.java | 0 .../test/resources/case/class_design/OneTopLevelClassCase.java | 0 .../src/test/resources/case/class_design/ThrowsCountCase.java | 0 .../test/resources/case/class_design/VisibilityModifierCase.java | 0 .../case/coding/ConstructorsDeclarationGroupingCase.java | 0 .../src/test/resources/case/coding/CovariantEqualsCase.java | 0 .../src/test/resources/case/coding/DeclarationOrderCase.java | 0 .../src/test/resources/case/coding/DefaultComesLastCase.java | 0 .../src/test/resources/case/coding/EmptyStatementCase.java | 0 .../src/test/resources/case/coding/EqualsAvoidNullCase.java | 0 .../src/test/resources/case/coding/EqualsHashCodeCase.java | 0 .../src/test/resources/case/coding/FallThroughCase.java | 0 .../src/test/resources/case/coding/HiddenFieldCase.java | 0 .../src/test/resources/case/coding/IllegalCatchCase.java | 0 .../src/test/resources/case/coding/IllegalInstantiationCase.java | 0 .../src/test/resources/case/coding/InnerAssignment.java | 0 .../src/test/resources/case/coding/MagicNumberCase.java | 0 .../src/test/resources/case/coding/MissingSwitchDefaultCase.java | 0 .../test/resources/case/coding/ModifiedControlVariableCase.java | 0 .../src/test/resources/case/coding/MultipleStringLiterals.java | 0 .../test/resources/case/coding/MultipleVariableDeclarations.java | 0 .../src/test/resources/case/coding/NestedForDepth.java | 0 .../src/test/resources/case/coding/NestedIfDepthCase.java | 0 .../src/test/resources/case/coding/NestedTryDepthCase.java | 0 .../src/test/resources/case/coding/NoCloneCase.java | 0 .../src/test/resources/case/coding/NoFinalizerCase.java | 0 .../src/test/resources/case/coding/OneStatementPerLineCase.java | 0 .../case/coding/OverloadMethodsDeclarationOrderCase.java | 0 .../src/test/resources/case/coding/ParameterAssignmentCase.java | 0 .../test/resources/case/coding/SimplifyBooleanExpressionCase.java | 0 .../src/test/resources/case/coding/SimplifyBooleanReturnCase.java | 0 .../src/test/resources/case/coding/StringLiteralEqualityCase.java | 0 .../src/test/resources/case/coding/SuperCloneCase.java | 0 .../src/test/resources/case/coding/SuperFinalizeCase.java | 0 .../coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java | 0 .../UnnecessarySemicolonAfterTypeMemberDeclarationCase.java | 0 .../case/coding/UnnecessarySemicolonInTryWithResourcesCase.java | 0 .../src/test/resources/case/coding/UnusedLocalVariableCase.java | 0 .../case/coding/VariableDeclarationUsageDistanceCase.java | 0 .../resources/case/headers_and_imports/AvoidStarImportCase.java | 0 .../resources/case/headers_and_imports/CustomImportOrderCase.java | 0 .../resources/case/headers_and_imports/RedundantImportCase.java | 0 .../test/resources/case/headers_and_imports/RegexpHeaderCase.java | 0 .../resources/case/headers_and_imports/UnusedImportsCase.java | 0 .../src/test/resources/case/javadoc/AtclauseOrderCase.java | 0 .../test/resources/case/javadoc/InvalidJavadocPositionCase.java | 0 .../test/resources/case/javadoc/JavadocBlockTagLocationCase.java | 0 .../test/resources/case/javadoc/JavadocContentLocationCase.java | 0 .../src/test/resources/case/javadoc/JavadocMethodCase.java | 0 .../resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java | 0 .../case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java | 0 .../src/test/resources/case/javadoc/JavadocParagraphCase.java | 0 .../case/javadoc/JavadocTagContinuationIndentationCase.java | 0 .../src/test/resources/case/javadoc/JavadocVariableCase.java | 0 .../src/test/resources/case/javadoc/MissingJavadocMethodCase.java | 0 .../src/test/resources/case/javadoc/MissingJavadocTypeCase.java | 0 .../resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java | 0 .../case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java | 0 .../src/test/resources/case/javadoc/SingleLineJavadocCase.java | 0 .../src/test/resources/case/javadoc/WriteTagCase.java | 0 .../resources/single_rules/annotations/AnnotationLocation.xml | 0 .../test/resources/single_rules/annotations/SuppressWarnings.xml | 0 .../resources/single_rules/block_checks/AvoidNestedBlocks.xml | 0 .../src/test/resources/single_rules/block_checks/EmptyBlock.xml | 0 .../src/test/resources/single_rules/block_checks/LeftCurly.xml | 0 .../src/test/resources/single_rules/block_checks/NeedBraces.xml | 0 .../src/test/resources/single_rules/block_checks/RightCurly.xml | 0 .../test/resources/single_rules/class_design/OneTopLevelClass.xml | 0 .../src/test/resources/single_rules/class_design/ThrowsCount.xml | 0 .../resources/single_rules/class_design/VisibilityModifier.xml | 0 .../single_rules/headers_and_imports/AvoidStarImport.xml | 0 .../single_rules/headers_and_imports/CustomImportOrder.xml | 0 .../resources/single_rules/headers_and_imports/ImportOrder.xml | 0 .../single_rules/headers_and_imports/RedundantImport.xml | 0 .../resources/single_rules/headers_and_imports/RegexpHeader.xml | 0 .../resources/single_rules/headers_and_imports/UnusedImports.xml | 0 .../src/test/resources/single_rules/javadoc/AtclauseOrder.xml | 0 .../resources/single_rules/javadoc/InvalidJavadocPosition.xml | 0 .../resources/single_rules/javadoc/JavadocBlockTagLocation.xml | 0 .../resources/single_rules/javadoc/JavadocContentLocation.xml | 0 .../src/test/resources/single_rules/javadoc/JavadocMethod.xml | 0 .../single_rules/javadoc/JavadocMissingLeadingAsterisk.xml | 0 .../javadoc/JavadocMissingWhitespaceAfterAsterisk.xml | 0 .../src/test/resources/single_rules/javadoc/JavadocParagraph.xml | 0 .../single_rules/javadoc/JavadocTagContinuationIndentation.xml | 0 .../src/test/resources/single_rules/javadoc/JavadocVariable.xml | 0 .../test/resources/single_rules/javadoc/MissingJavadocMethod.xml | 0 .../test/resources/single_rules/javadoc/MissingJavadocType.xml | 0 .../single_rules/javadoc/NonEmptyAtclauseDescription.xml | 0 .../single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml | 0 .../src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml | 0 .../src/test/resources/single_rules/javadoc/WriteTag.xml | 0 component/{CoceInspector => CodeInspector}/settings.gradle | 0 129 files changed, 0 insertions(+), 0 deletions(-) rename component/{CoceInspector => CodeInspector}/code_inspector/build.gradle (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/content/config/devkit_checkstyle.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/content/config/log4j.properties (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/content/data/.gitkeep (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/content/logs/.gitkeep (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/config.properties (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/log4j.properties (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/mappers/DataBaseMapper.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/mybatis-config.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/templates/CustomReport.template (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/templates/ResultErrorOnly.template (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/templates/ResultFileOnly.template (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/templates/ResultLineColumn.template (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/main/resources/templates/ResultLineOnly.template (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/annotationlocation.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/block_checks/AvoidNestedBlocksCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/block_checks/EmptyCatchBlockCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/block_checks/LeftCurlyCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/block_checks/NeedBracesCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/block_checks/RightCurlyAloneCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/block_checks/RightCurlySameCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/class_design/OneTopLevelClassCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/class_design/ThrowsCountCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/class_design/VisibilityModifierCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/ConstructorsDeclarationGroupingCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/CovariantEqualsCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/DeclarationOrderCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/DefaultComesLastCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/EmptyStatementCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/EqualsAvoidNullCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/EqualsHashCodeCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/FallThroughCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/HiddenFieldCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/IllegalCatchCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/IllegalInstantiationCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/InnerAssignment.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/MagicNumberCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/MissingSwitchDefaultCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/ModifiedControlVariableCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/MultipleStringLiterals.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/MultipleVariableDeclarations.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/NestedForDepth.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/NestedIfDepthCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/NestedTryDepthCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/NoCloneCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/NoFinalizerCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/OneStatementPerLineCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/OverloadMethodsDeclarationOrderCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/ParameterAssignmentCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/SimplifyBooleanExpressionCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/SimplifyBooleanReturnCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/StringLiteralEqualityCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/SuperCloneCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/SuperFinalizeCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonInTryWithResourcesCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/UnusedLocalVariableCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/coding/VariableDeclarationUsageDistanceCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml (100%) rename component/{CoceInspector => CodeInspector}/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml (100%) rename component/{CoceInspector => CodeInspector}/settings.gradle (100%) diff --git a/component/CoceInspector/code_inspector/build.gradle b/component/CodeInspector/code_inspector/build.gradle similarity index 100% rename from component/CoceInspector/code_inspector/build.gradle rename to component/CodeInspector/code_inspector/build.gradle diff --git a/component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml rename to component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml diff --git a/component/CoceInspector/code_inspector/src/main/content/config/log4j.properties b/component/CodeInspector/code_inspector/src/main/content/config/log4j.properties similarity index 100% rename from component/CoceInspector/code_inspector/src/main/content/config/log4j.properties rename to component/CodeInspector/code_inspector/src/main/content/config/log4j.properties diff --git a/component/CoceInspector/code_inspector/src/main/content/data/.gitkeep b/component/CodeInspector/code_inspector/src/main/content/data/.gitkeep similarity index 100% rename from component/CoceInspector/code_inspector/src/main/content/data/.gitkeep rename to component/CodeInspector/code_inspector/src/main/content/data/.gitkeep diff --git a/component/CoceInspector/code_inspector/src/main/content/logs/.gitkeep b/component/CodeInspector/code_inspector/src/main/content/logs/.gitkeep similarity index 100% rename from component/CoceInspector/code_inspector/src/main/content/logs/.gitkeep rename to component/CodeInspector/code_inspector/src/main/content/logs/.gitkeep diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/DataBaseMapper.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/dao/RuleViolationInfoMapper.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/CliOptions.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/RuleViolationInfo.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/DataBaseLogger.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/perload/DataBasePreLoad.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/utils/PropertiesUtils.java diff --git a/component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java similarity index 100% rename from component/CoceInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java rename to component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/wrappers/CheckStyleWrapper.java diff --git a/component/CoceInspector/code_inspector/src/main/resources/config.properties b/component/CodeInspector/code_inspector/src/main/resources/config.properties similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/config.properties rename to component/CodeInspector/code_inspector/src/main/resources/config.properties diff --git a/component/CoceInspector/code_inspector/src/main/resources/log4j.properties b/component/CodeInspector/code_inspector/src/main/resources/log4j.properties similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/log4j.properties rename to component/CodeInspector/code_inspector/src/main/resources/log4j.properties diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml b/component/CodeInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml rename to component/CodeInspector/code_inspector/src/main/resources/mappers/DataBaseMapper.xml diff --git a/component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml b/component/CodeInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml rename to component/CodeInspector/code_inspector/src/main/resources/mappers/RuleViolationInfoMapper.xml diff --git a/component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml b/component/CodeInspector/code_inspector/src/main/resources/mybatis-config.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/mybatis-config.xml rename to component/CodeInspector/code_inspector/src/main/resources/mybatis-config.xml diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/CustomReport.template b/component/CodeInspector/code_inspector/src/main/resources/templates/CustomReport.template similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/templates/CustomReport.template rename to component/CodeInspector/code_inspector/src/main/resources/templates/CustomReport.template diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template rename to component/CodeInspector/code_inspector/src/main/resources/templates/ResultErrorOnly.template diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template rename to component/CodeInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template rename to component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template diff --git a/component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template similarity index 100% rename from component/CoceInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template rename to component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java rename to component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java diff --git a/component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java rename to component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml b/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/annotationlocation.xml rename to component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/AvoidNestedBlocksCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/block_checks/AvoidNestedBlocksCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/block_checks/AvoidNestedBlocksCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/block_checks/AvoidNestedBlocksCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/EmptyCatchBlockCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/block_checks/EmptyCatchBlockCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/block_checks/EmptyCatchBlockCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/block_checks/EmptyCatchBlockCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/LeftCurlyCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/block_checks/LeftCurlyCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/block_checks/LeftCurlyCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/block_checks/LeftCurlyCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/NeedBracesCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/block_checks/NeedBracesCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/block_checks/NeedBracesCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/block_checks/NeedBracesCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlyAloneCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/block_checks/RightCurlyAloneCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlyAloneCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/block_checks/RightCurlyAloneCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlySameCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/block_checks/RightCurlySameCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/block_checks/RightCurlySameCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/block_checks/RightCurlySameCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/class_design/OneTopLevelClassCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/class_design/OneTopLevelClassCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/class_design/OneTopLevelClassCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/class_design/OneTopLevelClassCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/class_design/ThrowsCountCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/class_design/ThrowsCountCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/class_design/ThrowsCountCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/class_design/ThrowsCountCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/class_design/VisibilityModifierCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/class_design/VisibilityModifierCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/class_design/VisibilityModifierCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/class_design/VisibilityModifierCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/ConstructorsDeclarationGroupingCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/ConstructorsDeclarationGroupingCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/ConstructorsDeclarationGroupingCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/ConstructorsDeclarationGroupingCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/CovariantEqualsCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/CovariantEqualsCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/CovariantEqualsCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/CovariantEqualsCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/DeclarationOrderCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/DeclarationOrderCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/DeclarationOrderCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/DeclarationOrderCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/DefaultComesLastCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/DefaultComesLastCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/DefaultComesLastCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/DefaultComesLastCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/EmptyStatementCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/EmptyStatementCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/EmptyStatementCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/EmptyStatementCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsAvoidNullCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/EqualsAvoidNullCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsAvoidNullCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/EqualsAvoidNullCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsHashCodeCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/EqualsHashCodeCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/EqualsHashCodeCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/EqualsHashCodeCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/FallThroughCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/FallThroughCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/FallThroughCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/FallThroughCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/HiddenFieldCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/HiddenFieldCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/HiddenFieldCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/HiddenFieldCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalCatchCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/IllegalCatchCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalCatchCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/IllegalCatchCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalInstantiationCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/IllegalInstantiationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/IllegalInstantiationCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/IllegalInstantiationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/InnerAssignment.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/InnerAssignment.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/InnerAssignment.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/InnerAssignment.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/MagicNumberCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/MagicNumberCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/MagicNumberCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/MagicNumberCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/MissingSwitchDefaultCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/MissingSwitchDefaultCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/MissingSwitchDefaultCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/MissingSwitchDefaultCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/ModifiedControlVariableCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/ModifiedControlVariableCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/ModifiedControlVariableCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/ModifiedControlVariableCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleStringLiterals.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/MultipleStringLiterals.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleStringLiterals.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/MultipleStringLiterals.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleVariableDeclarations.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/MultipleVariableDeclarations.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/MultipleVariableDeclarations.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/MultipleVariableDeclarations.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedForDepth.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/NestedForDepth.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedForDepth.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/NestedForDepth.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedIfDepthCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/NestedIfDepthCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedIfDepthCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/NestedIfDepthCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedTryDepthCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/NestedTryDepthCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/NestedTryDepthCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/NestedTryDepthCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/NoCloneCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/NoCloneCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/NoCloneCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/NoCloneCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/NoFinalizerCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/NoFinalizerCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/NoFinalizerCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/NoFinalizerCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/OneStatementPerLineCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/OneStatementPerLineCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/OneStatementPerLineCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/OneStatementPerLineCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/OverloadMethodsDeclarationOrderCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/OverloadMethodsDeclarationOrderCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/OverloadMethodsDeclarationOrderCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/OverloadMethodsDeclarationOrderCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/ParameterAssignmentCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/ParameterAssignmentCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/ParameterAssignmentCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/ParameterAssignmentCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanExpressionCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanExpressionCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanExpressionCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanExpressionCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanReturnCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanReturnCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanReturnCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/SimplifyBooleanReturnCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/StringLiteralEqualityCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/StringLiteralEqualityCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/StringLiteralEqualityCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/StringLiteralEqualityCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperCloneCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/SuperCloneCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperCloneCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/SuperCloneCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperFinalizeCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/SuperFinalizeCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/SuperFinalizeCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/SuperFinalizeCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterOuterTypeDeclarationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonAfterTypeMemberDeclarationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonInTryWithResourcesCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonInTryWithResourcesCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonInTryWithResourcesCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/UnnecessarySemicolonInTryWithResourcesCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/UnusedLocalVariableCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/UnusedLocalVariableCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/UnusedLocalVariableCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/UnusedLocalVariableCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/coding/VariableDeclarationUsageDistanceCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/coding/VariableDeclarationUsageDistanceCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/coding/VariableDeclarationUsageDistanceCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/coding/VariableDeclarationUsageDistanceCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/AvoidStarImportCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/CustomImportOrderCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RedundantImportCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/UnusedImportsCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/AtclauseOrderCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/InvalidJavadocPositionCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocBlockTagLocationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocContentLocationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocMethodCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingLeadingAsteriskCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocParagraphCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocTagContinuationIndentationCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/JavadocVariableCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocMethodCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/MissingJavadocTypeCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/NonEmptyAtclauseDescriptionCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/SingleLineJavadocCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/javadoc/WriteTagCase.java diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/SuppressWarnings.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/AvoidNestedBlocks.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/EmptyBlock.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/LeftCurly.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/NeedBraces.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/block_checks/RightCurly.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/class_design/OneTopLevelClass.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/class_design/ThrowsCount.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/class_design/VisibilityModifier.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/AvoidStarImport.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/CustomImportOrder.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/ImportOrder.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RedundantImport.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/RegexpHeader.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/headers_and_imports/UnusedImports.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/AtclauseOrder.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/InvalidJavadocPosition.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocBlockTagLocation.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocContentLocation.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMethod.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingLeadingAsterisk.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocParagraph.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocTagContinuationIndentation.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/JavadocVariable.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocMethod.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/MissingJavadocType.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/NonEmptyAtclauseDescription.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/SingleLineJavadoc.xml diff --git a/component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml similarity index 100% rename from component/CoceInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml rename to component/CodeInspector/code_inspector/src/test/resources/single_rules/javadoc/WriteTag.xml diff --git a/component/CoceInspector/settings.gradle b/component/CodeInspector/settings.gradle similarity index 100% rename from component/CoceInspector/settings.gradle rename to component/CodeInspector/settings.gradle -- Gitee From a4b20baa660aa270d1110f9b17b6edf2630efb1f Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 15:12:03 +0800 Subject: [PATCH 16/25] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=92=8C=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code_inspector/src/main/resources/config.properties | 2 +- .../code_inspector/src/main/resources/mybatis-config.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/component/CodeInspector/code_inspector/src/main/resources/config.properties b/component/CodeInspector/code_inspector/src/main/resources/config.properties index 55962a5..c7c046f 100644 --- a/component/CodeInspector/code_inspector/src/main/resources/config.properties +++ b/component/CodeInspector/code_inspector/src/main/resources/config.properties @@ -1,4 +1,4 @@ # #mode=product mode=dev -root.dir=/home/z30027893/Workspace/devkit-pipeline/component/CoceInspector/code_inspector/src/main/content \ No newline at end of file +root.dir=code_inspector/src/main/content \ No newline at end of file diff --git a/component/CodeInspector/code_inspector/src/main/resources/mybatis-config.xml b/component/CodeInspector/code_inspector/src/main/resources/mybatis-config.xml index fd5a9a7..01b181f 100644 --- a/component/CodeInspector/code_inspector/src/main/resources/mybatis-config.xml +++ b/component/CodeInspector/code_inspector/src/main/resources/mybatis-config.xml @@ -8,7 +8,7 @@ - + -- Gitee From 4dc273ceacc43aa57d25afa28785a86c7d5e44bf Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 16:06:35 +0800 Subject: [PATCH 17/25] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=92=8C=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code_inspector/src/main/resources/config.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/CodeInspector/code_inspector/src/main/resources/config.properties b/component/CodeInspector/code_inspector/src/main/resources/config.properties index c7c046f..7407436 100644 --- a/component/CodeInspector/code_inspector/src/main/resources/config.properties +++ b/component/CodeInspector/code_inspector/src/main/resources/config.properties @@ -1,4 +1,4 @@ # #mode=product mode=dev -root.dir=code_inspector/src/main/content \ No newline at end of file +root.dir=src/main/content \ No newline at end of file -- Gitee From b05c77bc6810efbc02ff928a9a4060e390915970 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 16:07:23 +0800 Subject: [PATCH 18/25] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code/inspector/AnnotationsTest.java | 35 +++++ ...orTest.java => HeadersAndImportsTest.java} | 14 +- ...tCase.java => AnnotationLocationCase.java} | 2 +- .../annotations/AnnotationLocation.xml | 135 ------------------ .../ConstructorsDeclarationGrouping.xml | 18 +++ .../single_rules/coding/CovariantEquals.xml | 18 +++ .../single_rules/coding/DeclarationOrder.xml | 18 +++ .../single_rules/coding/DefaultComesLast.xml | 18 +++ .../single_rules/coding/EmptyStatement.xml | 18 +++ .../single_rules/coding/EqualsAvoidNull.xml | 18 +++ .../single_rules/coding/EqualsHashCode.xml | 18 +++ .../single_rules/coding/FallThrough.xml | 19 +++ .../single_rules/coding/HiddenField.xml | 21 +++ .../single_rules/coding/IllegalCatch.xml | 21 +++ .../coding/IllegalInstantiation.xml | 19 +++ .../single_rules/coding/IllegalThrows.xml | 19 +++ .../single_rules/coding/InnerAssignment.xml | 18 +++ .../single_rules/coding/MagicNumber.xml | 18 +++ .../coding/MissingSwitchDefault.xml | 18 +++ .../coding/ModifiedControlVariable.xml | 19 +++ .../coding/MultipleStringLiterals.xml | 19 +++ .../coding/MultipleVariableDeclarations.xml | 18 +++ .../single_rules/coding/NestedForDepth.xml | 19 +++ .../single_rules/coding/NestedIfDepth.xml | 19 +++ .../single_rules/coding/NestedTryDepth.xml | 19 +++ .../resources/single_rules/coding/NoClone.xml | 18 +++ .../single_rules/coding/NoFinalizer.xml | 18 +++ .../coding/OneStatementPerLine.xml | 19 +++ .../OverloadMethodsDeclarationOrder.xml | 18 +++ .../coding/ParameterAssignment.xml | 18 +++ .../coding/SimplifyBooleanExpression.xml | 18 +++ .../coding/SimplifyBooleanReturn.xml | 18 +++ .../coding/StringLiteralEquality.xml | 18 +++ .../single_rules/coding/SuperClone.xml | 18 +++ ...sarySemicolonAfterOuterTypeDeclaration.xml | 18 +++ ...arySemicolonAfterTypeMemberDeclaration.xml | 18 +++ ...UnnecessarySemicolonInTryWithResources.xml | 18 +++ .../coding/UnusedLocalVariable.xml | 18 +++ .../VariableDeclarationUsageDistance.xml | 19 +++ 39 files changed, 683 insertions(+), 149 deletions(-) create mode 100644 component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/AnnotationsTest.java rename component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/{CodeInspectorTest.java => HeadersAndImportsTest.java} (81%) rename component/CodeInspector/code_inspector/src/test/resources/case/annotations/{CodeInspectorTestCase.java => AnnotationLocationCase.java} (94%) create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ConstructorsDeclarationGrouping.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/CovariantEquals.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DeclarationOrder.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DefaultComesLast.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EmptyStatement.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsAvoidNull.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsHashCode.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/FallThrough.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/HiddenField.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalCatch.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalInstantiation.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalThrows.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/InnerAssignment.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MagicNumber.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MissingSwitchDefault.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ModifiedControlVariable.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleStringLiterals.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleVariableDeclarations.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedForDepth.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedIfDepth.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedTryDepth.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoClone.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoFinalizer.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OneStatementPerLine.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OverloadMethodsDeclarationOrder.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ParameterAssignment.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanExpression.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanReturn.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/StringLiteralEquality.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SuperClone.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterOuterTypeDeclaration.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterTypeMemberDeclaration.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonInTryWithResources.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnusedLocalVariable.xml create mode 100644 component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/VariableDeclarationUsageDistance.xml diff --git a/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/AnnotationsTest.java b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/AnnotationsTest.java new file mode 100644 index 0000000..a159364 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/AnnotationsTest.java @@ -0,0 +1,35 @@ +package com.huawei.devkit.code.inspector; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Objects; + +/** + * AnnotationsTest + * + * @since 2024-07-18 + */ +public class AnnotationsTest { + @Test + void testAnnotationLocation() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/annotations/AnnotationLocationCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/annotations/AnnotationLocation.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testAnnotationLocation.out", "-f", "json", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } + + @Test + void testSuppressWarnings() { + String root = System.getProperty("user.dir"); + String filePath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("case/annotations/SuppressWarningsCase.java")).getPath(); + String configPath = Objects.requireNonNull(this.getClass().getClassLoader() + .getResource("single_rules/annotations/SuppressWarnings.xml")).getPath(); + String[] args = new String[]{"-c", configPath, "-o", root + "/testAnnotationLocation.out", "-f", "json", filePath}; + Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); + } +} diff --git a/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/HeadersAndImportsTest.java similarity index 81% rename from component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java rename to component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/HeadersAndImportsTest.java index d2e29ad..161a644 100644 --- a/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/CodeInspectorTest.java +++ b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/HeadersAndImportsTest.java @@ -5,23 +5,11 @@ import org.junit.jupiter.api.Test; import java.util.Objects; -public class CodeInspectorTest { - @Test - void test01() { - String root = System.getProperty("user.dir"); - System.setProperty("CODE_INSPECTOR_APP_HOME", root + "/src/main/content"); - String filePath = Objects.requireNonNull(this.getClass().getClassLoader() - .getResource("case/annotations/CodeInspectorTestCase.java")).getPath(); - String configPath = Objects.requireNonNull(this.getClass().getClassLoader() - .getResource("annotationlocation.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/test01.out", "-f", "json", filePath}; - Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); - } +public class HeadersAndImportsTest { @Test void testRegexpHeader() { String root = System.getProperty("user.dir"); - System.setProperty("CODE_INSPECTOR_APP_HOME", root + "/src/main/content"); String filePath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("case/headers_and_imports/RegexpHeaderCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() diff --git a/component/CodeInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/annotations/AnnotationLocationCase.java similarity index 94% rename from component/CodeInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java rename to component/CodeInspector/code_inspector/src/test/resources/case/annotations/AnnotationLocationCase.java index a42ca27..2d587e3 100644 --- a/component/CodeInspector/code_inspector/src/test/resources/case/annotations/CodeInspectorTestCase.java +++ b/component/CodeInspector/code_inspector/src/test/resources/case/annotations/AnnotationLocationCase.java @@ -9,7 +9,7 @@ import org.junit.jupiter.api.Test; import javax.annotation.Nullable; @SuppressWarnings("unchecked") -public class CodeInspectorTestCase { +public class AnnotationLocationCase { @Nullable private String aab; @Test void test01() { diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml index 9580bcb..38c54d3 100644 --- a/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml @@ -17,140 +17,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ConstructorsDeclarationGrouping.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ConstructorsDeclarationGrouping.xml new file mode 100644 index 0000000..d0b5703 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ConstructorsDeclarationGrouping.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/CovariantEquals.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/CovariantEquals.xml new file mode 100644 index 0000000..07bf2e4 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/CovariantEquals.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DeclarationOrder.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DeclarationOrder.xml new file mode 100644 index 0000000..bdd048e --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DeclarationOrder.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DefaultComesLast.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DefaultComesLast.xml new file mode 100644 index 0000000..82175b4 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/DefaultComesLast.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EmptyStatement.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EmptyStatement.xml new file mode 100644 index 0000000..df04bd4 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EmptyStatement.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsAvoidNull.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsAvoidNull.xml new file mode 100644 index 0000000..d8b94c1 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsAvoidNull.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsHashCode.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsHashCode.xml new file mode 100644 index 0000000..feff21d --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/EqualsHashCode.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/FallThrough.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/FallThrough.xml new file mode 100644 index 0000000..bfd6c91 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/FallThrough.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/HiddenField.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/HiddenField.xml new file mode 100644 index 0000000..ccd32bd --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/HiddenField.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalCatch.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalCatch.xml new file mode 100644 index 0000000..e14351f --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalCatch.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalInstantiation.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalInstantiation.xml new file mode 100644 index 0000000..c41f1b1 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalInstantiation.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalThrows.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalThrows.xml new file mode 100644 index 0000000..fc9d765 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/IllegalThrows.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/InnerAssignment.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/InnerAssignment.xml new file mode 100644 index 0000000..dc38e55 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/InnerAssignment.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MagicNumber.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MagicNumber.xml new file mode 100644 index 0000000..07049c0 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MagicNumber.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MissingSwitchDefault.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MissingSwitchDefault.xml new file mode 100644 index 0000000..756748f --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MissingSwitchDefault.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ModifiedControlVariable.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ModifiedControlVariable.xml new file mode 100644 index 0000000..3055d09 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ModifiedControlVariable.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleStringLiterals.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleStringLiterals.xml new file mode 100644 index 0000000..8a34207 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleStringLiterals.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleVariableDeclarations.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleVariableDeclarations.xml new file mode 100644 index 0000000..d61b18f --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/MultipleVariableDeclarations.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedForDepth.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedForDepth.xml new file mode 100644 index 0000000..c1ba77e --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedForDepth.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedIfDepth.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedIfDepth.xml new file mode 100644 index 0000000..99e5699 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedIfDepth.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedTryDepth.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedTryDepth.xml new file mode 100644 index 0000000..8b65abb --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NestedTryDepth.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoClone.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoClone.xml new file mode 100644 index 0000000..25f7977 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoClone.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoFinalizer.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoFinalizer.xml new file mode 100644 index 0000000..3d9e362 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/NoFinalizer.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OneStatementPerLine.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OneStatementPerLine.xml new file mode 100644 index 0000000..fee402c --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OneStatementPerLine.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OverloadMethodsDeclarationOrder.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OverloadMethodsDeclarationOrder.xml new file mode 100644 index 0000000..246ecf8 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/OverloadMethodsDeclarationOrder.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ParameterAssignment.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ParameterAssignment.xml new file mode 100644 index 0000000..3db3cfb --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/ParameterAssignment.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanExpression.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanExpression.xml new file mode 100644 index 0000000..26d9816 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanExpression.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanReturn.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanReturn.xml new file mode 100644 index 0000000..57404fa --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SimplifyBooleanReturn.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/StringLiteralEquality.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/StringLiteralEquality.xml new file mode 100644 index 0000000..799fd74 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/StringLiteralEquality.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SuperClone.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SuperClone.xml new file mode 100644 index 0000000..fab5cf4 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/SuperClone.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterOuterTypeDeclaration.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterOuterTypeDeclaration.xml new file mode 100644 index 0000000..5a82a23 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterOuterTypeDeclaration.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterTypeMemberDeclaration.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterTypeMemberDeclaration.xml new file mode 100644 index 0000000..bb12170 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonAfterTypeMemberDeclaration.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonInTryWithResources.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonInTryWithResources.xml new file mode 100644 index 0000000..650e24b --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnnecessarySemicolonInTryWithResources.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnusedLocalVariable.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnusedLocalVariable.xml new file mode 100644 index 0000000..a126524 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/UnusedLocalVariable.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/VariableDeclarationUsageDistance.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/VariableDeclarationUsageDistance.xml new file mode 100644 index 0000000..b7dad9f --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/coding/VariableDeclarationUsageDistance.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + -- Gitee From 54ad8ddbcf0dcf637fadf70e51240fedca719d0d Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 16:15:42 +0800 Subject: [PATCH 19/25] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotations/SuppressWarningsCase.java | 26 +++++++++++++++++++ .../annotations/AnnotationLocation.xml | 4 +-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/component/CodeInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java index e69de29..dd798b1 100644 --- a/component/CodeInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java +++ b/component/CodeInspector/code_inspector/src/test/resources/case/annotations/SuppressWarningsCase.java @@ -0,0 +1,26 @@ +// ok below, since we are only checking for '^unchecked$|^unused$' +@SuppressWarnings("") +class SuppressWarningsCase { + // ok below as VARIABLE_DEF is not configured in tokens to check + @SuppressWarnings("") + final int num1 = 1; + @SuppressWarnings("all") + final int num2 = 2; + @SuppressWarnings("unused") + final int num3 = 3; + + // ok below as PARAMETER_DEF is not configured in tokens to check + void foo1(@SuppressWarnings("unused") int param) {} + + // ok below, since we are only checking for '^unchecked$|^unused$' + @SuppressWarnings("all") + void foo2(int param) {} + + // violation below, 'The warning 'unused' cannot be suppressed at this location' + @SuppressWarnings(true?"all":"unchecked") + void foo4(int param) {} +} + +// violation below, 'The warning 'unchecked' cannot be suppressed at this location' +@SuppressWarnings("unchecked") +class Test2 {} \ No newline at end of file diff --git a/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml b/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml index 38c54d3..1fbf9f2 100644 --- a/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml +++ b/component/CodeInspector/code_inspector/src/test/resources/single_rules/annotations/AnnotationLocation.xml @@ -8,12 +8,12 @@ - + + - -- Gitee From aafa55821826c858824a2d75299b0cb29abcffb6 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 18:38:02 +0800 Subject: [PATCH 20/25] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/content/config/devkit_checkstyle.xml | 170 +++++++++++++++++- .../src/test/resources/annotationlocation.xml | 6 +- 2 files changed, 170 insertions(+), 6 deletions(-) diff --git a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml index 0c2b849..5f36795 100644 --- a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml +++ b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml @@ -7,8 +7,9 @@ + - + @@ -17,6 +18,7 @@ + @@ -39,7 +41,7 @@ LITERAL_ELSE, LITERAL_FOR , INSTANCE_INIT, STATIC_INIT, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_CASE, LITERAL_DEFAULT"/> - + @@ -51,12 +53,14 @@ LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF, OBJBLOCK, STATIC_INIT, RECORD_DEF, COMPACT_CTOR_DEF"/> + + @@ -65,142 +69,180 @@ INSTANCE_INIT, ANNOTATION_DEF, ENUM_DEF, INTERFACE_DEF, RECORD_DEF, COMPACT_CTOR_DEF, LITERAL_SWITCH, LITERAL_CASE"/> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -209,11 +251,13 @@ + + @@ -223,31 +267,39 @@ + + + + + + + + @@ -291,6 +343,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml b/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml index 7c3dbba..e9992d0 100644 --- a/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml +++ b/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml @@ -8,7 +8,7 @@ - + @@ -70,7 +70,9 @@ - + + + -- Gitee From 0b848829a679a2bf1e1345bf4d241fb6b6aec64b Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Thu, 18 Jul 2024 20:44:10 +0800 Subject: [PATCH 21/25] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A7=84=E5=88=99?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/content/config/devkit_checkstyle.xml | 136 +++++++++++++++--- .../EmptyForInitializerPadCase.java | 11 ++ 2 files changed, 129 insertions(+), 18 deletions(-) create mode 100644 component/CodeInspector/code_inspector/src/test/resources/case/whitespace/EmptyForInitializerPadCase.java diff --git a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml index 5f36795..668b464 100644 --- a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml +++ b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml @@ -73,7 +73,7 @@ - + @@ -437,22 +437,109 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -461,6 +548,19 @@ - + + + + + + + + + + + + + diff --git a/component/CodeInspector/code_inspector/src/test/resources/case/whitespace/EmptyForInitializerPadCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/whitespace/EmptyForInitializerPadCase.java new file mode 100644 index 0000000..1360859 --- /dev/null +++ b/component/CodeInspector/code_inspector/src/test/resources/case/whitespace/EmptyForInitializerPadCase.java @@ -0,0 +1,11 @@ +class EmptyForInitializerPadCase { + int i = 0; + void example() { + for ( ; i < 1; i++ ); // violation '';' is preceded with whitespace' + for (; i < 2; i++ ); + for (;i<2;i++); + for ( ;i<2;i++); // violation '';' is preceded with whitespace' + for ( + ; i < 2; i++ ); + } +} \ No newline at end of file -- Gitee From a2d901b81bb0b9e4fd32791bc787329355a7194a Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Fri, 19 Jul 2024 11:31:49 +0800 Subject: [PATCH 22/25] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A7=84=E5=88=99id,?= =?UTF-8?q?=E5=88=A0=E9=99=A4sarif=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/content/config/devkit_checkstyle.xml | 206 +++++++++++++++--- .../devkit/code/inspector/CodeInspector.java | 3 +- .../code/inspector/entity/OutputStyle.java | 7 - .../listener/CustomJsonFormatterLogger.java | 6 +- .../code/inspector/HeadersAndImportsTest.java | 10 +- .../devkit/code/inspector/JavadocTest.java | 32 +-- .../headers_and_imports/RegexpHeaderCase.java | 4 +- 7 files changed, 205 insertions(+), 63 deletions(-) diff --git a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml index 668b464..72580be 100644 --- a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml +++ b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml @@ -20,6 +20,7 @@ + + + + @@ -71,61 +75,72 @@ + - + + + + + + + + + + + - - - - + + + + @@ -133,6 +148,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -269,31 +313,38 @@ + + + + + + + @@ -301,29 +352,36 @@ + + + + + + + + + + + + + + + + + + - - + + + + + + + @@ -374,23 +448,27 @@ + + + + @@ -398,72 +476,118 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )符合约定 --> + + + + + + + + @@ -519,20 +651,24 @@ - + + - + + - + + - + + @@ -543,24 +679,34 @@ + + + + + + + + - + + + diff --git a/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java index 32aacf6..f0a6774 100644 --- a/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java +++ b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/CodeInspector.java @@ -7,6 +7,7 @@ import com.huawei.devkit.code.inspector.wrappers.CheckStyleWrapper; import lombok.extern.slf4j.Slf4j; import picocli.CommandLine; +import java.util.Locale; import java.util.Properties; @Slf4j @@ -23,11 +24,11 @@ public class CodeInspector { log.info("start enter log"); Properties properties = PropertiesUtils.loadProperties("config.properties"); PropertiesUtils.configAndUpdate(properties); - log.info("start enter log"); if (cliOptions.getConfigurationFile() == null || cliOptions.getConfigurationFile().isEmpty()) { cliOptions.setConfigurationFile(PropertiesUtils.ROOT_DIR + "/config/devkit_checkstyle.xml"); } DataBasePreLoad.preload(properties); + Locale.setDefault(Locale.SIMPLIFIED_CHINESE); CheckStyleWrapper.checkStyle(cliOptions); } } catch (CommandLine.ParameterException ex) { diff --git a/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java index 8eb6ac2..3130558 100644 --- a/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java +++ b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/entity/OutputStyle.java @@ -7,7 +7,6 @@ package com.huawei.devkit.code.inspector.entity; import com.huawei.devkit.code.inspector.listener.CustomJsonFormatterLogger; import com.puppycrawl.tools.checkstyle.AbstractAutomaticBean; import com.puppycrawl.tools.checkstyle.DefaultLogger; -import com.puppycrawl.tools.checkstyle.SarifLogger; import com.puppycrawl.tools.checkstyle.XMLLogger; import com.puppycrawl.tools.checkstyle.api.AuditListener; @@ -25,10 +24,6 @@ public enum OutputStyle { * XML output format. */ XML, - /** - * SARIF output format. - */ - SARIF, /** * Json output format */ @@ -52,8 +47,6 @@ public enum OutputStyle { final AuditListener result; if (this == XML) { result = new XMLLogger(out, options); - } else if (this == SARIF) { - result = new SarifLogger(out, options); } else if (this == JSON) { result = new CustomJsonFormatterLogger(out, options); } else { diff --git a/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java index 8d0391b..e65175d 100644 --- a/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java +++ b/component/CodeInspector/code_inspector/src/main/java/com/huawei/devkit/code/inspector/listener/CustomJsonFormatterLogger.java @@ -149,7 +149,8 @@ public class CustomJsonFormatterLogger implements AuditListener { .replace(COLUMN_PLACEHOLDER, Integer.toString(event.getColumn())) .replace(LINE_PLACEHOLDER, Integer.toString(event.getLine())) .replace(MESSAGE_PLACEHOLDER, SarifLogger.escape(event.getMessage())) - .replace(RULE_ID_PLACEHOLDER, event.getViolation().getKey()) + .replace(RULE_ID_PLACEHOLDER, + event.getModuleId() != null ? event.getModuleId() : event.getViolation().getKey()) ); } else { results.add(resultLineOnly @@ -157,7 +158,8 @@ public class CustomJsonFormatterLogger implements AuditListener { .replace(URI_PLACEHOLDER, event.getFileName()) .replace(LINE_PLACEHOLDER, Integer.toString(event.getLine())) .replace(MESSAGE_PLACEHOLDER, SarifLogger.escape(event.getMessage())) - .replace(RULE_ID_PLACEHOLDER, event.getViolation().getKey()) + .replace(RULE_ID_PLACEHOLDER, + event.getModuleId() != null ? event.getModuleId() : event.getViolation().getKey()) ); } } diff --git a/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/HeadersAndImportsTest.java b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/HeadersAndImportsTest.java index 161a644..a4f3a82 100644 --- a/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/HeadersAndImportsTest.java +++ b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/HeadersAndImportsTest.java @@ -14,7 +14,7 @@ public class HeadersAndImportsTest { .getResource("case/headers_and_imports/RegexpHeaderCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/headers_and_imports/RegexpHeader.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testRegexpHeader.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testRegexpHeader.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -25,7 +25,7 @@ public class HeadersAndImportsTest { .getResource("case/headers_and_imports/AvoidStarImportCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/headers_and_imports/AvoidStarImport.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testAvoidStarImport.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testAvoidStarImport.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -36,7 +36,7 @@ public class HeadersAndImportsTest { .getResource("case/headers_and_imports/CustomImportOrderCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/headers_and_imports/CustomImportOrder.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testCustomImportOrderRules.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testCustomImportOrderRules.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -47,7 +47,7 @@ public class HeadersAndImportsTest { .getResource("case/headers_and_imports/UnusedImportsCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/headers_and_imports/UnusedImports.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testUnusedImports.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testUnusedImports.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -58,7 +58,7 @@ public class HeadersAndImportsTest { .getResource("case/headers_and_imports/RedundantImportCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/headers_and_imports/RedundantImport.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testRedundantImport.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testRedundantImport.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } } diff --git a/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java index 6cd761a..18d0aa5 100644 --- a/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java +++ b/component/CodeInspector/code_inspector/src/test/java/com/huawei/devkit/code/inspector/JavadocTest.java @@ -22,7 +22,7 @@ public class JavadocTest { .getResource("case/javadoc/AtclauseOrderCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/AtclauseOrder.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testAtclauseOrder.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testAtclauseOrder.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -33,7 +33,7 @@ public class JavadocTest { .getResource("case/javadoc/InvalidJavadocPositionCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/InvalidJavadocPosition.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testInvalidJavadocPosition.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testInvalidJavadocPosition.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -44,7 +44,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocBlockTagLocationCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocBlockTagLocation.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocBlockTagLocation.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocBlockTagLocation.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -55,7 +55,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocContentLocationCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocContentLocation.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocContentLocation.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocContentLocation.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -66,7 +66,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocMethodCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocMethod.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMethod.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMethod.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -77,7 +77,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocMissingLeadingAsteriskCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocMissingLeadingAsterisk.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMissingLeadingAsterisk.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMissingLeadingAsterisk.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -88,7 +88,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocMissingWhitespaceAfterAsteriskCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocMissingWhitespaceAfterAsterisk.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMissingWhitespaceAfterAsterisk.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocMissingWhitespaceAfterAsterisk.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -99,7 +99,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocParagraphCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocParagraph.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocParagraph.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocParagraph.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -111,7 +111,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocTagContinuationIndentationCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocTagContinuationIndentation.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocTagContinuationIndentation.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocTagContinuationIndentation.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -122,7 +122,7 @@ public class JavadocTest { .getResource("case/javadoc/JavadocVariableCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/JavadocVariable.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocVariable.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testJavadocVariable.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -133,7 +133,7 @@ public class JavadocTest { .getResource("case/javadoc/MissingJavadocMethodCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/MissingJavadocMethod.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testMissingJavadocMethod.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testMissingJavadocMethod.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -145,7 +145,7 @@ public class JavadocTest { .getResource("case/javadoc/MissingJavadocTypeCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/MissingJavadocType.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testMissingJavadocType.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testMissingJavadocType.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -156,7 +156,7 @@ public class JavadocTest { .getResource("case/javadoc/NonEmptyAtclauseDescriptionCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/NonEmptyAtclauseDescription.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testNonEmptyAtclauseDescription.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testNonEmptyAtclauseDescription.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -167,7 +167,7 @@ public class JavadocTest { .getResource("case/javadoc/RequireEmptyLineBeforeBlockTagGroupCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/RequireEmptyLineBeforeBlockTagGroup.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testRequireEmptyLineBeforeBlockTagGroup.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testRequireEmptyLineBeforeBlockTagGroup.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -178,7 +178,7 @@ public class JavadocTest { .getResource("case/javadoc/SingleLineJavadocCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/SingleLineJavadoc.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testSingleLineJavadoc.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testSingleLineJavadoc.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } @@ -189,7 +189,7 @@ public class JavadocTest { .getResource("case/javadoc/WriteTagCase.java")).getPath(); String configPath = Objects.requireNonNull(this.getClass().getClassLoader() .getResource("single_rules/javadoc/WriteTag.xml")).getPath(); - String[] args = new String[]{"-c", configPath, "-o", root + "/testWriteTag.out", "-f", "sarif", filePath}; + String[] args = new String[]{"-c", configPath, "-o", root + "/testWriteTag.out", "-f", "json", filePath}; Assertions.assertDoesNotThrow(() -> CodeInspector.main(args)); } diff --git a/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java b/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java index f448f05..5c237ed 100644 --- a/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java +++ b/component/CodeInspector/code_inspector/src/test/resources/case/headers_and_imports/RegexpHeaderCase.java @@ -2,8 +2,8 @@ * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. */ -package demo +package demo; -import java.lang.System +import java.lang.System; public class RegexpHeaderCase { } \ No newline at end of file -- Gitee From 904970d797f6a9cdc8db083cb830d404910b0ec6 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Fri, 19 Jul 2024 11:33:32 +0800 Subject: [PATCH 23/25] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A7=84=E5=88=99id,?= =?UTF-8?q?=E5=88=A0=E9=99=A4sarif=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/templates/ResultFileOnly.template | 2 +- .../src/main/resources/templates/ResultLineColumn.template | 2 +- .../src/main/resources/templates/ResultLineOnly.template | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/component/CodeInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template index a6420e3..56875eb 100644 --- a/component/CodeInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template +++ b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultFileOnly.template @@ -1,5 +1,5 @@ { "level": "${severityLevel}", - "locations": "${uri}" + "locations": "${uri}", "message": "${message}" } \ No newline at end of file diff --git a/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template index e35c99c..fe24b2b 100644 --- a/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template +++ b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineColumn.template @@ -3,6 +3,6 @@ "uri": "${uri}", "startColumn": ${column}, "startLine": ${line}, - "message": "${message}" + "message": "${message}", "ruleId": "${ruleId}" } \ No newline at end of file diff --git a/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template index 02f264d..9d8ebff 100644 --- a/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template +++ b/component/CodeInspector/code_inspector/src/main/resources/templates/ResultLineOnly.template @@ -2,6 +2,6 @@ "level": "${severityLevel}", "uri": "${uri}", "startLine": ${line}, - "message": "${message}" + "message": "${message}", "ruleId": "${ruleId}" } \ No newline at end of file -- Gitee From 2127abb4c265703a4986f19aec943323e677d5ad Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Mon, 22 Jul 2024 10:08:11 +0800 Subject: [PATCH 24/25] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=A7=84=E5=88=99=E7=9A=84=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/content/config/devkit_checkstyle.xml | 249 ++++++++++-------- 1 file changed, 141 insertions(+), 108 deletions(-) diff --git a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml index 72580be..aa6bd87 100644 --- a/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml +++ b/component/CodeInspector/code_inspector/src/main/content/config/devkit_checkstyle.xml @@ -7,7 +7,7 @@ - + - - + @@ -44,7 +43,7 @@ LITERAL_ELSE, LITERAL_FOR , INSTANCE_INIT, STATIC_INIT, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_CASE, LITERAL_DEFAULT"/> - + @@ -57,26 +56,28 @@ LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF, OBJBLOCK, STATIC_INIT, RECORD_DEF, COMPACT_CTOR_DEF"/> - + - + - + + @@ -90,55 +91,61 @@ - + - + - + - + - + - + - + - + - + - + @@ -146,7 +153,7 @@ - + @@ -154,195 +161,183 @@ value="Error, Exception, RuntimeException, Throwable, java.lang.Error, java.lang.Exception, java.lang.RuntimeException, java.lang.Throwable,NullPointerException,IndexOutOfBoundsException"/> - + - + - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - + - + - + - + - + - + - + @@ -350,29 +345,34 @@ - + + + + + + @@ -380,6 +380,7 @@ + @@ -388,85 +389,78 @@ value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, RECORD_DEF, ANNOTATION_DEF"/> + + + + + + + - + + + - + - + + + - - - - - - - - - - - - - - - + - - - + + + + - - - - - - + @@ -477,78 +471,114 @@ + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + - + + + + - + @@ -611,12 +641,12 @@ - + - + @@ -654,18 +684,24 @@ - + - + - + @@ -678,6 +714,7 @@ + @@ -686,10 +723,6 @@ value="^/\*$\n^\s\*\sCopyright\s\([Cc]\)\s.*([0-9]{4}-)?[0-9]{4}.*\n^ \*/$\n\n^package\s.*\n\n^import.*"/> - - - - -- Gitee From 3dfb990d105e8c792ef338a44ba2bb75af758ca7 Mon Sep 17 00:00:00 2001 From: zoupanpan Date: Mon, 22 Jul 2024 10:17:18 +0800 Subject: [PATCH 25/25] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E8=A7=84=E5=88=99=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/resources/annotationlocation.xml | 226 ------------------ 1 file changed, 226 deletions(-) delete mode 100644 component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml diff --git a/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml b/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml deleted file mode 100644 index e9992d0..0000000 --- a/component/CodeInspector/code_inspector/src/test/resources/annotationlocation.xml +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Gitee