java检查注入sql框架_Java:检查器框架
java检查注入sql框架
我在JavaOne 2012上 了解的有趣的工具之一是Checker Framework 。 Checker Framework的网页之一 指出 ,Checker Framework“增强了Java的类型系统,使其更加强大和有用”,从而使软件开发人员“能够检测并防止Java程序中的错误”。 查看Checker框架的一种方法是,实现JSR 305 (“软件缺陷检测批注”)的实施,前提是该软件未进入Hibernate阶段。
JSR 308 (“ Java类型的注释”)的目的是“扩展Java注释语法,以允许在出现任何类型时进行注释”。 一旦JSR 308被批准并成为Java编程语言的一部分,便可以在当前不允许使用的地方使用注释。 尽管JSR 308仍处于早期草稿审查2阶段,但Checker Framework允许开发人员在JSR 308允许使用的当前不允许的地方包含注释掉的注释代码。在此必须注意,JSR 308仅使注释更一般可用(指定可以应用它们的更多类型的源代码),并且不指定任何新注释。
Checker Framework需要Java SE 6或更高版本。 Checker Framework可以作为单个ZIP文件下载到http://types.cs.washington.edu/checker-framework/current/checkers.zip 。 可以将下载的文件解压缩到目录checker-framework
,然后可以将名为CHECKERS
的环境变量设置为指向该扩展目录的子目录“ checkers”。 例如,如果将checkers.zip
压缩到C:\checker-framework
,则环境变量CHECKERS
应该设置为C:\checker-framework\checkers
。
Checker Framework的checkers.zip
已被下载,扩展并由CHECKERS
环境变量指向,现在该尝试Checker Framework了。 接下来显示运行Checker Framework的“很长的路要走”,并与-version
标记一起使用以验证是否应用了Checker Framework:
视窗
java -Xbootclasspath/p:%CHECKERS%/binary/jsr308-all.jar -jar %CHECKERS%/binary/jsr308-all.jar -version
的Linux
java -Xbootclasspath/p:$CHECKERS/binary/jsr308-all.jar -jar $CHECKERS/binary/jsr308-all.jar -version
上面的代码应该导致输出看起来像下一个屏幕快照中所示。
现在可以将已安装的Checker Framework应用于编译代码。 下一个代码清单显示了一个简单的类,该类通过checkers.nullness.quals.NonNull ( @NonNull )批注指定方法参数不应为null。
使用Checker Framework的@NonNull
的@NonNull
package dustin.examples;import checkers.nullness.quals.NonNull;
import static java.lang.System.out;public class CheckersDemo
{public void printNonNullToString(@NonNull final Object object){out.println(object.toString());}public static void main(final String[] arguments){final CheckersDemo me = new CheckersDemo();final String nullStr = null;me.printNonNullToString(nullStr);}
}
上面的代码清单显示了将null传递给带有@NonNull
注释的参数的方法。 NetBeans 7.3会用黄色的花体标记该标志,并在其悬停时发出警告。 这显示在下一个屏幕快照中。
尽管NetBeans标记了标有@NonNull
批注的参数的null设置,但编译器会毫无疑问地构建该代码。 这就是Checker Framework的用处。因为键入前面显示的长命令很麻烦,所以我可以使用脚本运行上面显示的命令,或者按照Checker Framework安装说明中的说明设置别名。 在这种情况下,我将使用如下别名:
为Java Checker设置Windows命令行别名
doskey javachecker=java -Xbootclasspath/p:%CHECKERS%\binary\jsr308-all.jar -jar %CHECKERS%\binary\jsr308-all.jar $*
下一个屏幕快照中演示了此别名的设置以及如何使用-version
标志运行它。
将这种方法与别名集一起应用要容易得多。 这可以用来编译有问题的类,如下所示(使用我的“ javachecker”别名的命令和显示结果的图像)。
javachecker -d classes src\dustin\examples\*.java
上面的命令演示了我能够使用普通的javac
选项(例如-d
为已编译的.class
文件指定目标目录,并传递要正常编译的Java源文件。 该示例还演示了,如果不指定检查器处理器作为编译的一部分运行,则在编译期间不会强制使用@NotNull
附加类型。
在显示如何指定处理器以强制在编译期间强制执行@NonNull
之前,我想快速演示一下此编译方法仍将报告标准编译器错误。 仅就此示例而言,我已将第17行传递给感兴趣的方法的'nullStr'变量重命名为'nullStry',因此它是编译器错误。 接下来的两个屏幕快照显示了此更改(以及NetBeans报告的编译错误),以及Checker Framework编译方法还如何报告javac
错误。
已经显示了这种编译方法可以正常编译可编译代码,正常报告编译器错误并适当显示版本,现在该将其应用于更强大的类型强制了。 我通过删除添加的额外“ y”来修复代码中的编译器错误。 然后,我需要将-processor checkers.nullness.NullnessChecker
作为附加标志和参数传递给编译过程。 请注意,除了NullnessChecker之外,还有其他处理器,但是我在这里使用NullnessChecker
来在编译时强制@NonNull
。
下面显示了该命令以及显示该命令实际操作的输出窗口。 请注意,编译过程不允许完成,并且会报告基于违反@NonNull
类型的错误。
javachecker -processor checkers.nullness.NullnessChecker -d classes src\dustin\examples\*.java
这篇博客文章介绍了Checker Framework,并展示了如何快速将其应用于Java源代码中更强大的类型强制。 在这里,我只关注一种类型更强的类型,但是Checker Framework提供了其他内置类型检查,并支持编写自定义类型强制检查的选项。
参考:来自我们的JCG合作伙伴 Dustin Marx 的Checker框架,来自Inspired by Actual Events博客。
翻译自: https://www.javacodegeeks.com/2012/10/java-the-checker-framework.html
java检查注入sql框架
java检查注入sql框架_Java:检查器框架相关推荐
- java学生-成绩关联实体_java毕业设计_springboot框架的学生成绩智能管理
这是一个基于java的毕业设计项目,毕设课题为springboot框架的学生成绩智能管理, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+sp ...
- java设计校园网登录界面_java毕业设计_springboot框架的校园网的大学生社交网站...
这是一个基于java的毕业设计项目,毕设课题为springboot框架的校园网的大学生社交网站, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp ...
- 基于JAVA教学质量评价系统_java毕业设计_springboot框架的教学质量评价系统
这是一个基于java的毕业设计项目,毕设课题为springboot框架的教学质量评价系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+sp ...
- java报销系统的参考文献_java毕业设计_springboot框架的企业报销管理与实现
这是一个基于java的毕业设计项目,毕设课题为springboot框架的企业报销管理与实现, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+s ...
- java个人小管家代码_java毕业设计_springboot框架的家庭小管家系统
这是一个基于java的毕业设计项目,毕设课题为springboot框架的家庭小管家系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+spr ...
- android 视频播放器通用的编码框架,Android播放器框架设计系列-1
视频播放器框架已经非常成熟了,但是由于项目需求各种各样,第三方库使用起来需要大量修改定制,并且还会出现各种问题,因此把之前项目中开发的模块提取出来进行完善扩展,写了一套自研的播放框架,并且引入Jetp ...
- java 验证sql正确_java检查sql语法是否正确
因为以前作的项目 业务逻辑不能用系统定义的方案作计算 只能是让用户本身输入参数值设置比例计算规则 系统提供sql验证 在通常的项目中也不多用到这种类型的作法 以下:java import java.u ...
- java监控对话框是否关闭_java – 检查是否可以安全地关闭对话框
在我的应用程序中,我在长时间运行的后台进程中显示一个对话框,这是一个模态. android从后台任务返回时,该对话框被解除. final ProgressDialog progressDialog = ...
- java char定义为空_java – 检查char是否为空
我将代码从java转换为C有一个小问题 我试图检查是否设置了2d数组,这是我的java代码 for(int area_y = y -1 ;area_y > 0 ;area_y--) { for( ...
最新文章
- 3. JavaScript 数据类型
- 简单五步,实现物联网批量创建设备
- 云计算概况及第一个Azure程序
- jumserver 官方文档和
- 分布式操作系统的架构与性能
- 【游戏辅助】利用C语言编写《植物大战僵尸》修改阳光值代码
- 内存不能为read大全
- wamp实现外网访问本地
- DSPE-PEG-N3 磷脂PEG叠氮
- JAVA社交平台项目第四天 消息通知系统
- android通讯录开发(粗糙实现微信通讯录的功能)
- 哪看计算机的网络密码,如何检查计算机的无线网络密码?两种查看方法
- 分治、CDQ分治小结
- 如何利用网站优化给网站引流做营销
- UI-网站首页轮播图、易拉宝、发布在微信公众号的宣传海报的图片设计信息
- 记录JDK1.8 List 转 Map 的时候遇到的坑
- 细胞免疫疗法领军企业药明巨诺在港交所主板上市
- 【Java开发岗:SpringCould篇】
- 【 WebGis 开发框架FlexViewer 解读 】
- 防止 云端软件 下载完毕立即解压