2009-06-15 52 views
21

我正在使用NetBeans(Windows)中的Maven(jar)項目,它使用Maven Checkstyle插件創建Checkstyle報告。如何擺脫Checkstyle消息'文件不以換行符結束'。

無論我做什麼,我總是會收到關於Java類文件的消息:File does not end with a newline

我可以在Netbeans或Checkstyle中做什麼/配置以擺脫消息?

  • 的WinXP SP3
  • 的Netbeans 6.7 RC1(6.5也發生)
  • 的Maven 2.0.9
  • 的Maven插件Checkstyle的2.2
  • 的Java 1.6(更新:已使用軟件

    版本14)

回答

9

在文件末尾放一個換行符

配置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

在windows上使用netbeans似乎是不可能的 – 2009-06-19 11:16:41

+2

這是可能的。如果你可以將光標移動到最後一行,那麼你已經掌握了它。如果仍然沒有清除警告,請檢查[Alexey Voinov的回答](http://stackoverflow.com/a/15433548/1005481),並確保Checkstyle在配置更改後再次運行。 – 2014-01-24 13:20:28

3

有做這個簡單的方法。

<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> 
+0

如果禁止更改配置文件,但允許更改抑制文件(它發生!),這很好。如果您可能更改配置文件,最好從配置文件中刪除不需要的檢查。更少的混亂和更好的性能。 – 2014-01-24 13:17:44

0

的Eclipse ..Window >> Preferences >> Checkstyle >> Select the configuration file >>

  1. 點擊"Properties"按鈕>>取消選中您可以在不重寫太陽的CheckStyle配置文件指定一個文件鎮壓Protect Checkstyle Configuration file
  2. 點擊"Configure"按鈕>>搜索"New Line At End Of File" >>取消選中您在New Line At End Of File旁邊看到的複選框。
41

在我的情況下,這是檢查器配置不當的問題。默認情況下,它使用行結束符的系統默認約定。我正在研究windows,並且該項目使用了unix風格的行結尾。我不認爲無視警告是最好的策略,所以我所做的就是:

+0

謝謝,對我來說這是解決方案。即使團隊中的其他人使用CR-LF行分隔符檢出了Windows上的文件,它也能正常工作 – 2015-04-08 10:48:42

6

我碰到這個問題,當文件被保存爲UNIX格式,而不是DOS。 (或周圍,如果你做你的工作在Unix的其它方式)

要解決它,我用一個程序就從UNIX格式DOS轉換和保存該格式的文件。

在Eclipse: 文件 - >轉換行分隔符 - >的Windows

-2

//這裏是蠻力解決方案: 「在文件的結尾放一個換行符」

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

} 
相關問題