使用空格而不是缩进的缩进是首选的,因为它提供了所有编辑器/查看器之间的布局一致性.

但是,如果你仍然想要它,你可以随时自己检查checkstyle或一个自定义的maven插件/蚂蚁任务.

逻辑不应该很难实现 – 所有你必须检查任何行上的前导空间是否大于标签长度.

编辑:包括一个蚂蚁的例子.

自从你发布以来,现在已经有两个星期了,你还不开心,我有空闲时间:)

所以我为你制定了一个蚂蚁定制任务解决方案.

蚂蚁任务

public class SpaceDetectorTask extends Task {

public static final String REGEX = "^[ ]+";

public static final Pattern p = Pattern.compile(REGEX);

private FileSet fileSet;

private boolean failOnDetection;

// Usual getters/setters

public void addFileSet(FileSet fileSet) {

this.fileSet = fileSet;

}

public void execute() {

DirectoryScanner ds = fileSet.getDirectoryScanner();

String[] files = ds.getIncludedFiles();

for (int x = 0; x <= files.length -1; x++) {

process(ds.getBasedir(), files[x]);

}

}

public void process(File dir, String file) {

try {

BufferedReader reader = new BufferedReader(new FileReader(new File(dir, file)));

String line;

int linecount = 0;

System.out.println("File: " + file);

boolean ignore = false;

while((line = reader.readLine()) != null) {

linecount++;

// exclude comment blocks

if (line.contains("/**") || line.contains("*/")) {

ignore = !ignore;

continue;

}

if (!ignore) {

if (p.matcher(line).find()) {

int spcCount = line.length() - (line.replaceAll(REGEX, "")).length();

if (spcCount >= 4) { // break whenever 4 leading spaces are detected. Configure as you need.

String msg = "File: "+ file + " is using spaces as indentation.";

if (failOnDetection) {

throw new BuildException(msg);

} else {

getProject().log(msg);

}

}

}

reader.close();

}

}

} catch (IOException e) {

if (failOnDetection) {

throw new BuildException(e);

} else {

getProject().log("File: " + file + "\n" + e.getMessage());

}

}

}

在ant build.xml中

>先编译任务

>声明它

classname="com.blah.blah.build.tools.SpaceDetectorTask">

>使用它

failOnDetection="true">

编写一个maven / checkstyle插件也很难.

java 制表符 宽度不够_有没有办法强制使用制表符而不是Java中的空格?相关推荐

  1. Java并发编程实战_阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 为了帮助初级开发者快速掌握高并发.网络编程.微服务.海量数据的处理这些实用技术,本文以"理论+范例"的形式对各个知识点进行了详细的讲解,力争让读者在实践中快速掌握相关知识. ...

  2. Java实现一元函数遗传算法_遗传算法的基本概念和实现,附Java实现案例!

    基因遗传算法是一种灵感源于达尔文自然进化理论的启发式搜索算法.该算法反映了自然选择的过程,即最适者被选定繁殖,并产生下一代.本文简要地介绍了遗传算法的基本概念和实现,希望能为读者展示启发式搜索的魅力. ...

  3. java 隐藏地址栏参数_要想在浏览器的地址栏上的URL中隐藏传输的参数,需要将form标签的method属性值设置为( )。 (5.0分)_学小易找答案...

    [填空题]若在JSP页面的不同作用域中有相同名称的对象,且EL表达式中又省略了相应的作用域类型名,则系统将会按照 . . . 的先后顺序查找相应对象. (20.0分) [简答题]AJAX异步请求过程中 ...

  4. java写便签_如何编写一个便签程序(用Java语言编写)

    如何编写一个便签程序(用Java语言编写) 热度:336   发布时间:2011-02-18 11:44:16 如何编写一个便签程序(用Java语言编写) 因为以前没有好好学习Java,都搞忘了,请大 ...

  5. java 安卓客户端开发_《安卓网络编程》之第一篇 java环境下模拟客户端、服务器端...

    1.Socket简介 在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个 ...

  6. python是一种面向对象的高级语言_为什么入门大数据选择Python而不是Java?

    马云说:"未来最大的资源就是数据,不参与大数据十年后一定会后悔."毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰.今天我 ...

  7. Java开发研究生薪资_转行学什么技术最赚钱?选择java,你绝对不会后悔

    学Java的人现在确实很多,一般选择入行做IT做编程开发的人,基本都把Java作为首选语言. 为什么说选择java是比较好的呢,主要是从以下几个方面来看的: 1.高频率使用 java最为当今最火爆的编 ...

  8. java线程知乎_全网独家!知乎20K点赞的Java并发多线程笔记,简直堪称神仙级文档...

    有很多小伙伴都问过我,头条号里的关于java多线程的文章有pdf版本吗?我其实很想弄pdf,但是前段时间一直没时间去折腾,我把每个Java并发编程核心技术的都整理成了一个又一个的文档.昨天也是终于全部 ...

  9. java文件快速扫描仪_有没有办法从Java中的方法提供自动扫描仪输入?

    我正在创建一个带有矩阵加法,标量乘法,获得转置等的小型线性代数库,其构造函数将所需矩阵的尺寸作为参数. 我们的想法是能够在创建对象时使用随机元素或用户指定的元素返回给定大小的矩阵,并且我使用Scann ...

最新文章

  1. 【Intellij IDEA】eclipse项目导入
  2. SQL语句备份和还原数据库
  3. 量子计算技术的研究现状与趋势
  4. Java 序列化Serializable详解(附详细例子)
  5. openwrt安装编译
  6. tkinter打开文件选择窗口
  7. System.nanoTime
  8. Qualcomm QXDM工具简介和log抓取
  9. PWA(Progressive Web App)入门系列:Push
  10. c++builder中dbgrid控件排序_如何实现APP中各种布局效果?学会这几个控件就够了...
  11. CSDN博客不能正常发布的问题
  12. python爬房源信息_用python爬取链家网的二手房信息
  13. 04-04 常用代理工具
  14. 运行adb devices命令后 显示 List of devices attached 无法获取设备解决方法
  15. 程序员要找到自己的兴趣所在
  16. 【蓝桥杯国赛真题06】Scratch3D打印 少儿编程scratch蓝桥杯国赛真题和答案讲解
  17. 来了!Python 官方发布了整套的中文PDF 文档(共27本)
  18. Delphi 开发so库,Delphi 调用SO库
  19. Redis数据类型及编码
  20. 访问localhsot:8080需要密码

热门文章

  1. 64位系统和32位系统的区别
  2. 【NLP】详聊NLP中的阅读理解(MRC)
  3. Predicting Buffer Overflow Vulnerabilities through Mining Light-Weight Static Code Attributes
  4. 实现DQN算法玩CartPole
  5. 利用计算机解决实际问题,计算机程序可以解决哪些实际问题
  6. 审核和发送环节脱离?!看TOP级企业如何解决安全管理问题
  7. 一些优秀的小工具,快速帮助我们办公!
  8. uva10534 hdu2198 双向LIS问题
  9. linux可变剪切分析,SUPPA2进行可变剪切定量
  10. android中级培训,Android 中级学习心得