Как избавиться от сообщения Checkstyle «Файл не заканчивается переводом строки». - PullRequest
26 голосов
/ 15 июня 2009

Я работаю с проектом Maven (jar) в Netbeans (Windows), который создает отчеты Checkstyle с помощью плагина Maven Checkstyle.

Независимо от того, что я делаю, я всегда получаю сообщение: File does not end with a newline для файлов классов Java.

Что я могу сделать / настроить в Netbeans или Checkstyle, чтобы избавиться от сообщения?

Версии используемого программного обеспечения:

  • WinXP SP3
  • Netbeans 6.7 RC1 (тоже с 6.5)
  • Maven 2.0.9
  • Плагин Maven Checkstyle 2.2
  • Java 1.6 (обновление 14)

Ответы [ 6 ]

53 голосов
/ 15 марта 2013

В моем случае это была проблема с неправильной настройкой этой программы проверки. По умолчанию используется системное соглашение об окончании строк. Я работал над окнами, и в проекте использовались окончания строк в стиле Unix. Я не думаю, что игнорирование предупреждения - лучшая стратегия, поэтому я сделал следующее:

<module name="Checker">
    <module name="NewlineAtEndOfFile">
        <property name="lineSeparator" value="lf" />
    </module>
</module>
10 голосов
/ 19 июня 2009

Поместить новую строку в конец файла
или
настроить 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>
6 голосов
/ 22 апреля 2013

Я сталкиваюсь с этой проблемой, когда файлы сохраняются в формате UNIX вместо DOS. (или наоборот, если вы работаете в Unix)

Чтобы исправить это, я использую программу, конвертирующую из формата UNIX в DOS и сохраняющую файл в этом формате.

В затмении: Файл -> Конвертировать разделители строк в -> Windows

4 голосов
/ 05 января 2010

Есть более простой способ сделать это. Вы можете указать файл подавлений, не переопределяя файл конфигурации 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>
0 голосов
/ 13 ноября 2015

// Вот решение грубой силы:

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

}
0 голосов
/ 13 марта 2013

Затмение ..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.
...