Java 如何摆脱Checkstyle消息“文件不以换行符结尾”
我正在使用Netbeans Windows中的Maven jar项目,该项目使用Maven Checkstyle插件创建Checkstyle报告 无论我做什么,我总是得到这样一条信息:文件不会以Java类文件的换行符结尾 我可以在Netbeans或Checkstyle中执行/配置哪些操作来删除该消息 所用软件的版本: WinXP SP3 Netbeans 6.7 RC1也适用于6.5 Maven 2.0.9 Maven Checkstyle插件2.2 Java 1.6更新14Java 如何摆脱Checkstyle消息“文件不以换行符结尾”,java,windows,maven-2,netbeans,checkstyle,Java,Windows,Maven 2,Netbeans,Checkstyle,我正在使用Netbeans Windows中的Maven jar项目,该项目使用Maven Checkstyle插件创建Checkstyle报告 无论我做什么,我总是得到这样一条信息:文件不会以Java类文件的换行符结尾 我可以在Netbeans或Checkstyle中执行/配置哪些操作来删除该消息 所用软件的版本: WinXP SP3 Netbeans 6.7 RC1也适用于6.5 Maven 2.0.9 Maven Checkstyle插件2.2 Java 1.6更新14 在文件末尾添加一个
在文件末尾添加一个换行符 或 将CheckStyle配置为不在乎 您还必须告诉Maven Checkstyle插件使用您的Checkstyle配置文件 maven checkstyle插件 ${basedir}/yourCheckstyle.xml
有一种更简单的方法可以做到这一点。您可以指定抑制文件,而无需覆盖sun checkstyle配置文件: org.apache.maven.plugins maven checkstyle插件 suppressions.xml config/sun_checks.xml 您的suppressions.xml位于: Eclipse..Window>>首选项>>检查样式>>选择配置文件>> 单击属性按钮>>取消选中保护Checkstyle配置文件。 单击配置按钮>>搜索文件末尾的新行>>取消选中文件末尾新行旁边的复选框。
在我的情况下,这是一个错误的配置,该检查器的问题。默认情况下,它使用线端点的系统默认约定。我在windows上工作,项目使用的是unix风格的行尾。我不认为忽视警告是最好的策略,因此我所做的是:
当文件保存为UNIX格式而不是DOS格式时,我遇到了这个问题。或者,如果您在Unix中工作,则使用其他方法 为了解决这个问题,我使用了一个从UNIX格式转换到DOS格式的程序,并以该格式保存文件 在eclipse中:
文件->将行分隔符转换为->Windows//以下是暴力解决方案:
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();
}
}
}
在文件末尾添加一个换行符。在Windows上使用netbeans似乎不可能做到这一点。如果你能将光标移过最后一行,那么你就得到了它。如果仍然无法清除警告,请检查并确保在配置更改后再次运行Checkstyle。如果禁止更改配置文件,但允许更改禁止文件,则这非常好!。如果您可以更改配置文件,那么最好从配置文件中删除不需要的检查。更少的混乱和更好的性能。谢谢,对我来说这是解决方案。即使团队中的其他人在Windows上使用CR-LF行分隔符签出了他们的文件,它也可以工作。而这个代码片段可能会解决这个问题,确实有助于提高您的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。为我工作。非常感谢。