Naturalize环境配置和使用说明
2017-09-06 20:14
1351 查看
~By Fnoily
项目概述
Naturalize由爱丁堡大学信息学院(Edinburgh University's School of Informatics)的一群研究者(Miltos Allamanis博士等人)研制一个项目。
其主要的功能为,针对用户的项目特定代码库进行分析,建立语言模型。并借此,对用户代码进行命名规范的建议。
Naturalize项目详情: http://groups.inf.ed.ac.uk/naturalize/
Naturalize源码: https://github.com/mast-group/naturalize
Naturalize论文:http://dl.acm.org/citation.cfm?id=2635883
环境配置
考虑到本文读者水平可能参差不齐,接下来,作者将详细描述这一配置过程。
1、Clone项目
首先,将我们所需的代码,从Github上clone下来。
我们可以发现我们所需的代码,不止Naturalize项目的代码,还有,其4个依赖项目(见图1)。
图 1所需依赖项目
我们不妨先建立一个文件夹,来统一管理这些项目。假设将其命名为NewProject(见图2)。
键入命令为:
mkdir NewProject
图 2建立名为NewProject文件夹
随后根据各项目版本库URL,进行Clone。
Naturalize:
https://github.com/mast-group/naturalize.git
Codemining-sequencelm:
https://github.com/mast-group/codemining-sequencelm.git
Codemining-utils:
https://github.com/mast-group/codemining-utils.git
Codemining-core:
https://github.com/mast-group/codemining-core.git
Commitmining-tools:
https://github.com/mast-group/commitmining-tools.git
键入命令为:
git clone https://github.com/mast-group/naturalize.git
git clone https://github.com/mast-group/codemining-sequencelm.git
git clone https://github.com/mast-group/codemining-utils.git
git clone https://github.com/mast-group/codemining-core.git
git clone https://github.com/mast-group/commitmining-tools.git
图 3将所需代码clone下来
2、依赖项目打包,并加入maven本地库
该项目是是利用maven构建的,所以在compile前还需要一些准备工作。(maven是一种可通过一小段描述信息来管理项目构建,报告和文档的软件管理工具,具体内容请读者自行查阅,这里不再赘述)
具体准备工作
(1)针对codemining-utils的工作
将工作目录切换到codemining-utils下,将其打包
键入命令为:
cd codemining-utils
mvn package
图 4打包codemining-utils
打包成功后,在codemining-utils目录下会生成一个jar包文件
图 5生成的jar包文件
接下来将这个jar包文件,移动这上层文件夹(也就是和pom.xml文件放在一起),然后将其添加至本地库中。
键入命令:
mv codemining-utils-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=codemining-utils-1.1-SNAPSHOT.jar
【注】此处命令内容较多,建议读者复制,以防出错
图 6将jar包移至上层
图 7加入本地库
(2)针对codemining-core的工作
在我们直接对codemining-core进行打包命令时,会发现会报告很多内容找不到的错误。
图 8错误报告
这是由于目前的更改环境之后(相对于开发者),目前的描述项目信息的pom文件就不能支持项目现在正常运行,即可以理解为缺少了一些描述依赖关系的内容。(如何知道添加哪些依赖呢?请读者见文末的附录)所以,请读者用连接中的内容,替换pom文件中内容:
https://github.com/Fnoily/study-of-naturalize/blob/master/codemining-core/pom.xml
而后,再次进行打包。
图 9再次打包
之后,将target目录下jar包移至上层,并加入本地库中。
键入命令:
mv codemining-core-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=codemining-core-1.1-SNAPSHOT.jar
此处工作与(1)中相类似,不再配图说明。
(3)针对codemining-sequencelm的工作
类似的,先将pom.xml中内容,替换成以下连接中内容:
https://github.com/Fnoily/study-of-naturalize/blob/master/codemining-all/codemining-sequencelm/pom.xml
而后进行打包,发现依旧报错。
图 10codemining-sequence依旧报错
读者在这里不禁要发问,这是因为什么呢?仔细观察pom.xml文件后发现。其还需要一个名为codemining-all的parent关系。
图 11仔细观察pom.xml
因此,立即可推,此时需要在codemining-sequence外面再套一个名为codemining-all的文件夹。
图 12建一个名为codemining-all的文件夹
之后,在此目录下再新建一个pom.xml来描述依赖关系。使用以下连接中内容进行填写。
https://github.com/Fnoily/study-of-naturalize/blob/master/codemining-all/pom.xml
图 13新建一个pom文件
之后再进入codemining-sequence中进行打包,和将jar添加到本地库中的工作。
部分键入命令为:
cd codemining-sequencelm/
mvn package
cd target/
mv codemining-sequencelm-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=codemining-sequencelm-1.1-SNAPSHOT.jar
(3)针对commitming-tools的工作
类似的,将pom.xml中内容按照以下连接中内容进行修改。
https://github.com/Fnoily/study-of-naturalize/blob/master/commitmining-tools/pom.xml
之后进行打包并添加入本地库中的工作。
键入命令为:
mvn package
cd target/
mv commitmining-tools-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=commitmining-tools-1.1-SNAPSHOT.jar
(4)针对naturalize的工作
类似的,将pom.xml中内容按照以下连接中内容进行修改。
https://github.com/Fnoily/study-of-naturalize/blob/master/naturalize/pom.xml
之后进行打包并添加入本地库中的工作。
键入命令为:
mvn package
cd target/
mv naturalize-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=naturalize-1.1-SNAPSHOT.jar
3、编译运行
做完以上工作后,就可以成功的编译Naturalize项目了。
键入命令为:
mvn compile
图 14Naturalizer成功编译
4、导入eclipse
因为项目是由maven构建的,一般maven项目的信息保存在pom.xml中。而eclipse项目,也有自己的默认java目录结构,保存于.classpath,.project和.settings中。所以,想要用eclipse来阅读源码,是不可以直接打开的。
但是,maven中有帮我们解决这一问题的方法。
可以使用以下命令,以转化eclipse项目。
mvn eclipse:eclipse
图 15mvn eclipse:eclipse
之后,我们可以发现,在目录下生成了一些我们想要的东西。
图 16一些变化
然后,就可以在eclipse中将其成功导入。
图 17导入eclipse
为读者便捷,笔者在Github上push了一份配置好的项目,可直接在Github上搜索名称为study-of-naturalize后直接clone即可。
三、工具运行
Miltos博士等人,在Natualize的基础上,开发了几款工具(论文中都有提到,请读者按照第一部分中连接进行阅读)。这些工具的主要的功能,也是对用户的代码进行变量名称更改的建议。
所提供的工具,读者都可以在http://groups.inf.ed.ac.uk/naturalize上找到并下载。
1、buildlm
buildlm是根据用户代码库进行分析生成语言模型的,其产品为语言模型文件(.ser文件),其他的工具(如devstyle)在某些情况下会使用到这一模型。
其命令格式为
java -jar buildlm.jar -n 5 -t /dir/of/codebase/to/train -o myLm.ser
其中"-n"后参数为n-gram取值(详情请读者自行查看论文),"-t"为用户代码库地址,"-t"后为生成语言模型文件的名称。
图 18生成例子
2、devstyle
Devstyle是一个eclipse的插件,于是,首先有这样一个问题,如何通过jar包来安装插件。
相信读者不难从网络上找到方法,在这里,笔者只提供一种相对简单的方法。
将devstyle.jar放置在eclipse安装目录下Eclipse\dropins\下即可。
图 19一种简单方法
【注】有时eclipse版本会影响到安装成功与否,笔者在实验时就遇到在eclipse neon版本不成功,但在eclipse oxygen版本便可成功。
成功后,右键菜单中会有devstyle选项。
图 20 devstyle插件成功安装
之后,用户可选中待分析部分代码,右键选择"naturalize"进行分析。
图 21分析结果
用户可选择一个认为合适的待选选项,点击"OK",之后,所有的待修改变量将被更改。如图21,若选择"temperature"后,所有的"t"将会被工具识别并修改为"temperature"。
3、styleprofile
Stylrprofile将会为用户返回分析代码后的变量名称修改建议的一个列表清单。在笔者看来,可以认为devstyle是图形化的styleprofile。
其使用命令为:
图 22使用命令
"-c"后参数为用户代码库地址和待分析文件
【注】图22中styleprofile在实际使用时应替换成为java -jar styleprofile.jar
图 24 实际使用part2
附录
1、如何添加pom.xml中缺少的依赖关系?
一般来说,pom文件中总体的框架是完备的,但是由于使用者和开发者机器环境不同,则会导致在编译时发生一些错误。这是因为,有一些包,在开发者的机器上是有的,所以就不用在特别声明依赖关系。而我们作为使用者是没有这些内容的,所以就需要写明这些依赖关系,在打包或编译的过程中,会自动下载这些内容。
大体上,依赖关系都是写在xml文件中
<dependencies>
...
</dependencies>
这样的结构中的,其依赖项书写格式为:
<dependency>
<groupId>…</groupId>
<artifactId>…</artifactId>
<version>…</version>
</dependency>
接下来,就是要知道我们缺少哪些依赖项。
实际上,查看编译信息是一个很重要的能力。我们,可以先进行打包或编译尝试,通过报错信息,查看缺少什么。
图 25报错信息例子
如图25 ,我们就可以清楚的知道我们缺少org.apache.commons.io.filefilter这个程序包,之后我们便可以借助于搜索引擎,的查看这个包是什么,就可易得以下内容:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
2、读者如有问题,可通过以下方式与笔者联系
alpc_fnoily@163.com(请注明"Naturalize编译问题")
项目概述
Naturalize由爱丁堡大学信息学院(Edinburgh University's School of Informatics)的一群研究者(Miltos Allamanis博士等人)研制一个项目。
其主要的功能为,针对用户的项目特定代码库进行分析,建立语言模型。并借此,对用户代码进行命名规范的建议。
Naturalize项目详情: http://groups.inf.ed.ac.uk/naturalize/
Naturalize源码: https://github.com/mast-group/naturalize
Naturalize论文:http://dl.acm.org/citation.cfm?id=2635883
环境配置
考虑到本文读者水平可能参差不齐,接下来,作者将详细描述这一配置过程。
1、Clone项目
首先,将我们所需的代码,从Github上clone下来。
我们可以发现我们所需的代码,不止Naturalize项目的代码,还有,其4个依赖项目(见图1)。
图 1所需依赖项目
我们不妨先建立一个文件夹,来统一管理这些项目。假设将其命名为NewProject(见图2)。
键入命令为:
mkdir NewProject
图 2建立名为NewProject文件夹
随后根据各项目版本库URL,进行Clone。
Naturalize:
https://github.com/mast-group/naturalize.git
Codemining-sequencelm:
https://github.com/mast-group/codemining-sequencelm.git
Codemining-utils:
https://github.com/mast-group/codemining-utils.git
Codemining-core:
https://github.com/mast-group/codemining-core.git
Commitmining-tools:
https://github.com/mast-group/commitmining-tools.git
键入命令为:
git clone https://github.com/mast-group/naturalize.git
git clone https://github.com/mast-group/codemining-sequencelm.git
git clone https://github.com/mast-group/codemining-utils.git
git clone https://github.com/mast-group/codemining-core.git
git clone https://github.com/mast-group/commitmining-tools.git
图 3将所需代码clone下来
2、依赖项目打包,并加入maven本地库
该项目是是利用maven构建的,所以在compile前还需要一些准备工作。(maven是一种可通过一小段描述信息来管理项目构建,报告和文档的软件管理工具,具体内容请读者自行查阅,这里不再赘述)
具体准备工作
(1)针对codemining-utils的工作
将工作目录切换到codemining-utils下,将其打包
键入命令为:
cd codemining-utils
mvn package
图 4打包codemining-utils
打包成功后,在codemining-utils目录下会生成一个jar包文件
图 5生成的jar包文件
接下来将这个jar包文件,移动这上层文件夹(也就是和pom.xml文件放在一起),然后将其添加至本地库中。
键入命令:
mv codemining-utils-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=codemining-utils-1.1-SNAPSHOT.jar
【注】此处命令内容较多,建议读者复制,以防出错
图 6将jar包移至上层
图 7加入本地库
(2)针对codemining-core的工作
在我们直接对codemining-core进行打包命令时,会发现会报告很多内容找不到的错误。
图 8错误报告
这是由于目前的更改环境之后(相对于开发者),目前的描述项目信息的pom文件就不能支持项目现在正常运行,即可以理解为缺少了一些描述依赖关系的内容。(如何知道添加哪些依赖呢?请读者见文末的附录)所以,请读者用连接中的内容,替换pom文件中内容:
https://github.com/Fnoily/study-of-naturalize/blob/master/codemining-core/pom.xml
而后,再次进行打包。
图 9再次打包
之后,将target目录下jar包移至上层,并加入本地库中。
键入命令:
mv codemining-core-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=codemining-core-1.1-SNAPSHOT.jar
此处工作与(1)中相类似,不再配图说明。
(3)针对codemining-sequencelm的工作
类似的,先将pom.xml中内容,替换成以下连接中内容:
https://github.com/Fnoily/study-of-naturalize/blob/master/codemining-all/codemining-sequencelm/pom.xml
而后进行打包,发现依旧报错。
图 10codemining-sequence依旧报错
读者在这里不禁要发问,这是因为什么呢?仔细观察pom.xml文件后发现。其还需要一个名为codemining-all的parent关系。
图 11仔细观察pom.xml
因此,立即可推,此时需要在codemining-sequence外面再套一个名为codemining-all的文件夹。
图 12建一个名为codemining-all的文件夹
之后,在此目录下再新建一个pom.xml来描述依赖关系。使用以下连接中内容进行填写。
https://github.com/Fnoily/study-of-naturalize/blob/master/codemining-all/pom.xml
图 13新建一个pom文件
之后再进入codemining-sequence中进行打包,和将jar添加到本地库中的工作。
部分键入命令为:
cd codemining-sequencelm/
mvn package
cd target/
mv codemining-sequencelm-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=codemining-sequencelm-1.1-SNAPSHOT.jar
(3)针对commitming-tools的工作
类似的,将pom.xml中内容按照以下连接中内容进行修改。
https://github.com/Fnoily/study-of-naturalize/blob/master/commitmining-tools/pom.xml
之后进行打包并添加入本地库中的工作。
键入命令为:
mvn package
cd target/
mv commitmining-tools-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=commitmining-tools-1.1-SNAPSHOT.jar
(4)针对naturalize的工作
类似的,将pom.xml中内容按照以下连接中内容进行修改。
https://github.com/Fnoily/study-of-naturalize/blob/master/naturalize/pom.xml
之后进行打包并添加入本地库中的工作。
键入命令为:
mvn package
cd target/
mv naturalize-1.1-SNAPSHOT.jar ../
cd
..
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=naturalize-1.1-SNAPSHOT.jar
3、编译运行
做完以上工作后,就可以成功的编译Naturalize项目了。
键入命令为:
mvn compile
图 14Naturalizer成功编译
4、导入eclipse
因为项目是由maven构建的,一般maven项目的信息保存在pom.xml中。而eclipse项目,也有自己的默认java目录结构,保存于.classpath,.project和.settings中。所以,想要用eclipse来阅读源码,是不可以直接打开的。
但是,maven中有帮我们解决这一问题的方法。
可以使用以下命令,以转化eclipse项目。
mvn eclipse:eclipse
图 15mvn eclipse:eclipse
之后,我们可以发现,在目录下生成了一些我们想要的东西。
图 16一些变化
然后,就可以在eclipse中将其成功导入。
图 17导入eclipse
为读者便捷,笔者在Github上push了一份配置好的项目,可直接在Github上搜索名称为study-of-naturalize后直接clone即可。
三、工具运行
Miltos博士等人,在Natualize的基础上,开发了几款工具(论文中都有提到,请读者按照第一部分中连接进行阅读)。这些工具的主要的功能,也是对用户的代码进行变量名称更改的建议。
所提供的工具,读者都可以在http://groups.inf.ed.ac.uk/naturalize上找到并下载。
1、buildlm
buildlm是根据用户代码库进行分析生成语言模型的,其产品为语言模型文件(.ser文件),其他的工具(如devstyle)在某些情况下会使用到这一模型。
其命令格式为
java -jar buildlm.jar -n 5 -t /dir/of/codebase/to/train -o myLm.ser
其中"-n"后参数为n-gram取值(详情请读者自行查看论文),"-t"为用户代码库地址,"-t"后为生成语言模型文件的名称。
图 18生成例子
2、devstyle
Devstyle是一个eclipse的插件,于是,首先有这样一个问题,如何通过jar包来安装插件。
相信读者不难从网络上找到方法,在这里,笔者只提供一种相对简单的方法。
将devstyle.jar放置在eclipse安装目录下Eclipse\dropins\下即可。
图 19一种简单方法
【注】有时eclipse版本会影响到安装成功与否,笔者在实验时就遇到在eclipse neon版本不成功,但在eclipse oxygen版本便可成功。
成功后,右键菜单中会有devstyle选项。
图 20 devstyle插件成功安装
之后,用户可选中待分析部分代码,右键选择"naturalize"进行分析。
图 21分析结果
用户可选择一个认为合适的待选选项,点击"OK",之后,所有的待修改变量将被更改。如图21,若选择"temperature"后,所有的"t"将会被工具识别并修改为"temperature"。
3、styleprofile
Stylrprofile将会为用户返回分析代码后的变量名称修改建议的一个列表清单。在笔者看来,可以认为devstyle是图形化的styleprofile。
其使用命令为:
图 22使用命令
"-c"后参数为用户代码库地址和待分析文件
【注】图22中styleprofile在实际使用时应替换成为java -jar styleprofile.jar
图 24 实际使用part2
附录
1、如何添加pom.xml中缺少的依赖关系?一般来说,pom文件中总体的框架是完备的,但是由于使用者和开发者机器环境不同,则会导致在编译时发生一些错误。这是因为,有一些包,在开发者的机器上是有的,所以就不用在特别声明依赖关系。而我们作为使用者是没有这些内容的,所以就需要写明这些依赖关系,在打包或编译的过程中,会自动下载这些内容。
大体上,依赖关系都是写在xml文件中
<dependencies>
...
</dependencies>
这样的结构中的,其依赖项书写格式为:
<dependency>
<groupId>…</groupId>
<artifactId>…</artifactId>
<version>…</version>
</dependency>
接下来,就是要知道我们缺少哪些依赖项。
实际上,查看编译信息是一个很重要的能力。我们,可以先进行打包或编译尝试,通过报错信息,查看缺少什么。
图 25报错信息例子
如图25 ,我们就可以清楚的知道我们缺少org.apache.commons.io.filefilter这个程序包,之后我们便可以借助于搜索引擎,的查看这个包是什么,就可易得以下内容:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
2、读者如有问题,可通过以下方式与笔者联系
alpc_fnoily@163.com(请注明"Naturalize编译问题")
相关文章推荐
- PHP环境配置:Windows下XAMPP的安装说明与使用
- Linux上安装配置使用Tomcat说明文档和JDK环境变量配置
- FCKeditor 2.6.5 ASP环境安装配置使用说明
- Linux上安装配置使用Tomcat说明文档和JDK环境变量配置
- Robot Framework+RIDE+Selenium环境搭建配置及使用说明
- PHP环境配置:Windows下XAMPP的安装说明与使用
- Maven在生成环境的使用及其配置说明
- Turboc2.0 下载配置使用说明,C语言环境配置
- VisualSVN.Server. V2.59 企业版破解及在域(Active Diretory)环境下使用配置说明
- FCKeditor 2.6.4 ASP环境安装配置使用说明
- PHP环境配置:Windows下XAMPP的安装说明与使用
- Linux上安装配置使用Tomcat说明文档和JDK环境变量配置
- PHP环境配置:Windows下XAMPP的安装说明与使用
- 使用PVCS系列软件构建配置管理环境(三)
- 使用PVCS系列软件构建配置管理环境(四)
- 使用PVCS系列软件构建配置管理环境(二)
- 使用PVCS系列软件构建配置管理环境(一)
- [转]关于安装配置XNA开发环境的详细说明
- [转]关于安装配置XNA开发环境的详细说明