代码之家  ›  专栏  ›  技术社区  ›  Michael Pralow

如何摆脱Checkstyle消息“文件不以换行符结尾”

  •  26
  • Michael Pralow  · 技术社区  · 15 年前

    我正在使用Netbeans(Windows)中的一个Maven(jar)项目,该项目使用Maven Checkstyle插件创建Checkstyle报告。

    无论我做什么,我总是得到这样的信息: File does not end with a newline 用于Java类文件。

    所用软件的版本:

    • WinXP SP3
    • Netbeans 6.7 RC1(也适用于6.5)
    • Maven Checkstyle插件2.2
    • Java 1.6(更新14)
    6 回复  |  直到 13 年前
        1
  •  62
  •   robingrindrod sherbang    11 年前

    在我的情况下,这是一个错误的配置,该检查器的问题。默认情况下,它使用线端点的系统默认约定。我在windows上工作,项目使用的是unix风格的行尾。我不认为忽视警告是最好的策略,因此我所做的是:

    <module name="Checker">
        <module name="NewlineAtEndOfFile">
            <property name="lineSeparator" value="lf" />
        </module>
    </module>
    
        2
  •  13
  •   barfuin PKV    11 年前

    在文件末尾添加一个换行符

    将CheckStyle配置为不在乎。

    <module name="Checker">
        <!-- stuff deleted -->
        <module name="NewlineAtEndOfFile">
            <property name="severity" value="ignore" />
        </module>
    

    您还必须告诉Maven Checkstyle插件使用您的Checkstyle配置文件。

    <plugin>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
            <configLocation>${basedir}/yourCheckstyle.xml</configLocation>
        </configuration>
    </plugin>
    
        3
  •  8
  •   Ben    12 年前

    为了解决这个问题,我使用了一个从UNIX格式转换到DOS格式的程序,并以该格式保存文件。

    在eclipse中:

        4
  •  4
  •   barfuin PKV    11 年前

    有一种更简单的方法可以做到这一点。您可以指定抑制文件,而无需覆盖sun checkstyle配置文件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
            <suppressionsLocation>suppressions.xml</suppressionsLocation>
            <configLocation>config/sun_checks.xml</configLocation>
        </configuration>
    </plugin>
    

    您的suppressions.xml位于:

    <?xml version="1.0"?>
    <!DOCTYPE suppressions PUBLIC
        "-//Puppy Crawl//DTD Suppressions 1.1//EN"
        "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
    
    <suppressions>
        <suppress checks="NewlineAtEndOfFile" files=".java" />
    </suppressions>
    
        5
  •  0
  •   reixa    12 年前

    日食 ..Window >> Preferences >> Checkstyle >> Select the configuration file >>

    1. 点击 "Properties" Protect Checkstyle Configuration file .
    2. 点击 "Configure" 按钮>&燃气轮机;寻找 "New Line At End Of File" New Line At End Of File .
        6
  •  -3
  •   Heiko Mueller    9 年前

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.util.ArrayList;
    
    /**
     *
     * @author hMueller
     */
    
    public class UnixToWindowsEncoding {
    
    //rewrites all .java files in Windows encoding
    //a[0] = parent directory
    //loops through all subdirectories and fixes whatever .java file it finds
    public static void main(String[] a){
        String startdir = a[0];
        fixDir(startdir);
    
    }
    
    private static void fixDir(String dirname){
        try{
            File f = new File(dirname);
            File[] list = f.listFiles();
            for(int i = 0; i < list.length; i++){
                if(list[i].isDirectory()){
                    fixDir(list[i].getAbsolutePath());
                }else{
                    if(list[i].getName().endsWith(".java")){
                        ArrayList<String> l = new ArrayList<String>();
                        FileReader fr = new FileReader(list[i]);
                        BufferedReader br = new BufferedReader(fr);
                        String line = "";
                        while( (line = br.readLine()) != null){
                            l.add(line);
                        }
                        br.close();
                        fr.close();
                        list[i].delete();
                        FileWriter fwr = new FileWriter(list[i]);
                        for(String s : l){
                            fwr.write(s + "\r\n");
                        }
                        fwr.flush();
                        fwr.close();
                    }
                }
            }
        }catch(Exception ioe){
            ioe.printStackTrace();
        }
    }
    
    }