Подтвердить что ты не робот

Как избавиться от сообщения Checkstyle "Файл не заканчивается новой строкой".

Я работаю над проектом 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)
4b9b3361

Ответ 1

Поместите новую строку в конец файла
или
настройте 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>

Ответ 2

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

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

Ответ 3

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

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

В eclipse: Файл → Преобразование разделителей строк в → Windows

Ответ 4

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

Где ваш suppressionions.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

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

  • Нажмите кнопку "Properties" → Снимите флажок Protect Checkstyle Configuration file.
  • Нажмите кнопку "Configure" → найдите "New Line At End Of File" → Снимите флажок, который вы видите рядом с New Line At End Of File.

Ответ 6

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

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

}