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

8zzbczxx  于 2022-11-10  发布在  其他
关注(0)|答案(7)|浏览(224)

我正在Netbeans(Windows)中使用一个Maven(jar)项目,该项目使用Maven Checkstyle插件创建Checkstyle报告。
不管我做什么,我总是得到这样的信息:File does not end with a newline表示Java类文件。
我可以在Netbeans或Checkstyle中执行什么操作/配置什么来删除该消息?
所用软件的版本:

  • Windows XP SP3操作系统
  • Netbeans 6.7 RC 1(在6.5版中也是如此)
  • Maven 2.0.9版本
  • Maven检查样式插件2.2
  • Java 1.6(更新14)
jv4diomz

jv4diomz1#

在我的例子中,这是一个错误的配置的问题。默认情况下,它使用系统默认的行尾约定。我工作的窗口和项目使用的是Unix风格的行尾。我不认为忽略警告是最好的策略,所以我所做的是:

<module name="Checker">
    <module name="NewlineAtEndOfFile">
        <property name="lineSeparator" value="lf" />
    </module>
</module>
falq053o

falq053o2#

在文件末尾换行

将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>
yfwxisqw

yfwxisqw3#

当文件保存为UNIX格式而不是DOS格式时,我遇到了这个问题。(如果您在Unix中工作,也可以使用其他方式)
为了解决这个问题,我使用一个程序将UNIX格式转换为DOS格式,并将文件保存为该格式。
在eclipse中:文件-〉将行分隔符转换为-〉窗口

xmd2e60i

xmd2e60i4#

有一种更简单的方法可以做到这一点。你可以指定一个抑制文件,而不覆盖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>
dphi5xsq

dphi5xsq5#

日 eclipse ..Window >> Preferences >> Checkstyle >> Select the configuration file >>
1.点击"Properties"按钮〉〉取消选中Protect Checkstyle Configuration file
1.点击"Configure"按钮〉〉搜索"New Line At End Of File"〉〉取消选中您在New Line At End Of File旁边看到的复选框。

9o685dep

9o685dep6#

在观察到问题的类末尾添加新行(按Enter键)

bvjveswy

bvjveswy7#

//以下是暴力破解的解决方案:

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();
    }
}

}

相关问题