`
knight_black_bob
  • 浏览: 853032 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

checkstyle 解决 没有注释 没有括号问题 工具

阅读更多

 

checkstyle  解决 没有类注释  没有行注释  if else 没有括号问题 ,可以使用下面工具类,进行自动添加 ,节省修改时间 

 

 

 

package com.xxx.checkstyle;

public class SearchResult {
    String filename;
    String lineString;
    String error;
    int line;
}

 

package com.xxx.checkstyle;

public interface IProcessLine {
    public String processLine(String line);
    
    public int getLineNumber(SearchResult result);
}

 

package com.xxx.checkstyle;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.apache.log4j.Logger;

public class CheckStyleResultFileParser {

    private static final Logger logger = Logger
            .getLogger(CheckStyleResultFileParser.class);
    File f;
    BufferedReader fileReader;

    String currentFileName;

    public CheckStyleResultFileParser(String filename)
            throws FileNotFoundException {
        this.f = new File(filename);
        fileReader = new BufferedReader(new FileReader(f));
    }

    public SearchResult find(String type) throws IOException {
        String s;
        if (!this.fileReader.ready())
            return null;
        while ((s = this.nextLine()) != null) {
            s = s.trim();
            if (s.startsWith("<file")) {
                /*
                 * <filename=
                 * "C:\work\dev\proj\newsvn\java/util\aoi-protocol\trunk\src\main\java\com\cmcc\rd\aoi\log\LoggerFactory.java""
                 * >
                 */
                int startIndex = s.indexOf("name=\"");
                int endIndex = s.indexOf("\"", startIndex + 6);
                this.currentFileName = s.substring(startIndex + 6, endIndex);
            } else if (s.startsWith("<error")) {
                /*
                 * <error line="31" column="5" severity="error" message="Missing a Javadoc comment."
                 * source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck"/>
                 */
                if (s.indexOf(type) > 0) {
                    SearchResult result = new SearchResult();
                    int startIndex = s.indexOf("line=\"");
                    int endIndex = s.indexOf("\"", startIndex + 6);
                    String lineString = s.substring(startIndex + 6, endIndex);
                    result.line = Integer.parseInt(lineString);
                    result.error = type;
                    result.filename = this.currentFileName;
                    result.lineString = s;
                    return result;
                }
            }
        }
        this.fileReader.close();
        return null;
    }

    private String nextLine() throws IOException {
        return this.fileReader.readLine();
    }
    
  

}

 

package com.xxx.checkstyle;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

public class LineFileModifier {

    private static final Logger logger = Logger.getLogger(LineFileModifier.class);

    public boolean process(List<SearchResult> list, IProcessLine processor) {
        if (list == null || list.size() == 0)
            return true;
        else {
            // 读文件,先把文件每行存到一个 list里
            File file = new File(list.get(0).filename);
            logger.warn(" ===============================");
            logger.warn(" FileName: " + list.get(0).filename + ", add number: " + list.size());
            logger.warn(" ===============================");
            BufferedReader reader = null;
            List<String> lineList = new ArrayList<String>();
            try {
                reader = new BufferedReader(new FileReader(file));
                String s = null;
                while ((s = reader.readLine()) != null) {
                    lineList.add(s);
                }
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            } finally {
                if (reader != null)
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
            }
            // 将文件按需求处理
            for (SearchResult result : list) {
                String tmp = lineList.remove(processor.getLineNumber(result));
                tmp = processor.processLine(tmp);
                lineList.add(processor.getLineNumber(result), tmp);
            }
            // 打印日志,不是必须的
            for (String line : lineList) {
                logger.debug(line);
            }
            // 把list内容写回文件中
            FileWriter writer = null;
            try {
                writer = new FileWriter(file);
                for (String s : lineList) {
                    writer.write(s);
                    writer.write("\n");
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (writer != null)
                    try {
                        writer.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
            }
        }
        return true;
    }
}

 

package com.xxx.checkstyle;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

public class ProcessNeedJavaDocComment implements IProcessLine {

    private static final Logger logger = Logger.getLogger(ProcessNeedJavaDocComment.class);
    String type = "JavadocMethodCheck";

    public ProcessNeedJavaDocComment() {
    }

    public void run(String filename) throws Exception {
        CheckStyleResultFileParser parser = new CheckStyleResultFileParser(filename);
        SearchResult result;
        SearchResult lastResult = null;
        List<SearchResult> list = new ArrayList<SearchResult>();
        LineFileModifier moFileModifier = new LineFileModifier();
        while ((result = parser.find(type)) != null) {
            logger.debug(result.filename);
            logger.debug(result.lineString);
            logger.debug(result.line);
            if (lastResult == null) {
                list.add(result);
            } else if (lastResult.filename.equals(result.filename)) {
                list.add(result);
            } else {
                process(moFileModifier, list);
                list.add(result);
            }
            lastResult = result;
        }
        process(moFileModifier, list);
    }

    public void process(LineFileModifier modifier, List<SearchResult> list) {
        modifier.process(list, this);
        list.clear();
    }

    public static void main(String[] args) {

        String checkstyleResultFile = "I:\\cache\\ea-ws\\FUSIONDataEngine\\target\\checkstyle-result.xml";
        try {
            new ProcessNeedJavaDocComment().run(checkstyleResultFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public String processLine(String line) {
        line = line.trim();
        if (line.startsWith("/*") || line.startsWith("*/"))
            return line;
        else {
            return "/**   */" + line ;
        }
    }

    @Override
    public int getLineNumber(SearchResult result) {
        return result.line -1 ;
    }
}

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

0
2
分享到:
评论

相关推荐

    checkstyle-代码规范工具

    5. **社区支持**:Checkstyle 是一个活跃的开源项目,拥有丰富的文档和社区资源,便于解决问题和获取帮助。 总之,Checkstyle 是一种强大的工具,可以帮助开发者和团队遵循一致的编码规范,提升代码质量和可维护性...

    checkstyle

    3. **代码格式**:行长度限制,空格和制表符的使用,大括号的放置位置,注释的格式等。 4. **设计原则**:避免使用魔法数字,避免使用硬编码字符串,强制使用接口而非具体实现等。 5. **错误预防**:检查未使用的...

    checkstyle中文帮助文档

    9. **常见问题**:文档中通常会列出一些用户可能遇到的问题及其解决方案,帮助用户更好地理解和解决Checkstyle使用过程中遇到的困难。 总的来说,Checkstyle中文帮助文档是学习和使用Checkstyle进行代码质量管理的...

    checkstyle 5.1

    2. **错误检测**:通过检查代码中的潜在问题,如未使用的变量、空指针异常、不正确的异常处理等,Checkstyle 5.1能帮助开发者在早期阶段发现和修复问题,提高代码质量。 3. **注释检查**:检查类、方法、变量的注释...

    checkstyle安装-eclipse插件装法

    Checkstyle 是一款强大的 Java 代码质量检查工具,它能够帮助开发者遵循特定的编码规范和风格,确保代码的一致性和可读性。Eclipse Checkstyle 插件是将 Checkstyle 集成到 Eclipse IDE 中的一种方式,使得在编写...

    CheckStyle常见错误.docx

    CheckStyle是一款静态代码分析工具,用于检查Java代码的格式、编程风格和可读性。下面是常见的CheckStyle错误提示和解决方法: 1. Type is missing a javadoc comment 错误解决方法:增加 javadoc 说明 在 Java ...

    Java代码规范、格式化和checkstyle检查配置文档

    在开发过程中,Checkstyle会实时报告违反规则的代码行,帮助开发者及时修复问题。 配置Checkstyle涉及到以下几个步骤: 1. **获取配置文件**:可以从Checkstyle官方网站获取预设的配置,如“sun_checks.xml”,也...

    Checkstyle插件

    Checkstyle插件是一款强大的静态代码分析工具,专为Java开发者设计。它的主要目的是在编码阶段就发现潜在的错误和不符合编码规范的地方,从而提高代码质量和可维护性。这个插件可以方便地集成到Eclipse IDE中,使得...

    checkstyle配置文件说明

    Checkstyle 是一个强大的静态代码分析工具,用于检测 Java 代码中的风格问题和潜在错误。配置文件是 Checkstyle 工作的核心,它定义了一系列规则来确保代码遵循特定的编码规范。以下是对 Checkstyle 配置文件中各个...

    checkStyle规则.docx

    CheckStyle是一款静态代码分析工具,用于检查Java代码的风格、格式和质量。本文档将详细介绍CheckStyle规则的设定方式和作用。 基本概念 CheckStyle规则通过XML文件来配置,定义了各种检查规则,包括代码风格、...

    checkstyle使用说明

    CheckStyle 是一个强大的静态代码分析工具,主要用于检测 Java 代码是否符合特定的编码规范和风格。这个工具可以帮助开发者保持代码的一致性和可读性,从而提高团队合作的效率,减少因编码风格不统一引发的冲突。 #...

    CheckStyle-eclipse插件安装及使用说明

    CheckStyle是一款强大的静态代码分析工具,主要用于检查Java源代码是否符合一定的编码规范。它可以帮助开发者遵循统一的编程标准,提高代码的可读性和可维护性,减少潜在的错误。在Eclipse集成开发环境中安装并使用...

    编码规范化插件checkStyle

    - 没有被注释掉的Main函数:检查main方法是否被注释。 - 大写的L:确保长整型常量使用大写L。 #### 结论 Checkstyle是一个非常有用的工具,不仅能够帮助开发人员遵循编码规范,还能提升代码的质量和可维护性。...

    CheckStyleCheckStyle

    CheckStyle是一款著名的开源代码检查工具,它主要用于Java项目的编码规范检查。通过定义一系列的编码规则,CheckStyle可以帮助开发者保持代码的一致性和可读性,从而提高代码质量和团队合作效率。这款工具广泛应用于...

Global site tag (gtag.js) - Google Analytics