提交 d099740b authored 作者: wyl's avatar wyl

合并分支 'wyl' 到 'master'

Wyl 查看合并请求 ty_wyl/adaptation-master1!63
...@@ -195,12 +195,6 @@ ...@@ -195,12 +195,6 @@
<artifactId>junit-jupiter-api</artifactId> <artifactId>junit-jupiter-api</artifactId>
<version>RELEASE</version> <version>RELEASE</version>
<scope>compile</scope> <scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>apiguardian-api</artifactId>
<groupId>org.apiguardian</groupId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
......
...@@ -8,9 +8,8 @@ import lombok.Data; ...@@ -8,9 +8,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
...@@ -24,6 +23,7 @@ public class Report { ...@@ -24,6 +23,7 @@ public class Report {
private int fileNum; private int fileNum;
private long lineNum; private long lineNum;
private List<PomDependency> dependencies; private List<PomDependency> dependencies;
@Transient @Transient
private ProjectPom projectPom; private ProjectPom projectPom;
......
...@@ -20,6 +20,7 @@ public class PomDependency { ...@@ -20,6 +20,7 @@ public class PomDependency {
private String artifactId; private String artifactId;
private String version; private String version;
private Integer reportId; private Integer reportId;
/*依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展 /*依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展
名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。 名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。
如果设置extensions为 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整 如果设置extensions为 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整
......
...@@ -81,7 +81,7 @@ public class AdaptationServiceImpl implements AdaptationService { ...@@ -81,7 +81,7 @@ public class AdaptationServiceImpl implements AdaptationService {
//project1.setCodeUrl(Const.UPLOAD_LOCATION+File.separator+project1.getProjectName()); //project1.setCodeUrl(Const.UPLOAD_LOCATION+File.separator+project1.getProjectName());
project1.setCodeUrl(Const.UPLOAD_LOCATION+project1.getProjectName()); project1.setCodeUrl(Const.UPLOAD_LOCATION+project1.getProjectName());
try { try {
FileUtils.cleanDirectory(new File(project.getCodeUrl())); FileUtils.cleanDirectory(new File(project1.getCodeUrl()));
FileZip.unzip(new File(path),project1.getCodeUrl()); FileZip.unzip(new File(path),project1.getCodeUrl());
project1.setStage(project.getStage()); project1.setStage(project.getStage());
if(project.getStage() == 1){ if(project.getStage() == 1){
......
...@@ -17,10 +17,8 @@ import org.dom4j.io.SAXReader; ...@@ -17,10 +17,8 @@ import org.dom4j.io.SAXReader;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.Yaml;
import java.io.File; import java.io.*;
import java.io.FileInputStream; import java.net.URLDecoder;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.MalformedInputException; import java.nio.charset.MalformedInputException;
import java.nio.file.*; import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
...@@ -39,69 +37,101 @@ import java.util.*; ...@@ -39,69 +37,101 @@ import java.util.*;
public class Inspector { public class Inspector {
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(LocalDateTime.now());
//System.out.println("请输入项目地址,然后回车");
//Scanner scanner = new Scanner(System.in);
//String next = scanner.next();
//Project project = new Project(); //Project project = new Project();
//project.setCodeUrl(next);
Map<String, Report.Language> suffixLanguageMapping = new HashMap<>();
suffixLanguageMapping.put("java",Report.Language.JAVA);
// Map<String, Report.Language> suffixLanguageMapping = new HashMap<>(); suffixLanguageMapping.put("cpp",Report.Language.CPP);
// suffixLanguageMapping.put("java",Report.Language.JAVA); suffixLanguageMapping.put("py",Report.Language.PYTHON);
// suffixLanguageMapping.put("cpp",Report.Language.CPP); suffixLanguageMapping.put("jsp",Report.Language.JSP);
// suffixLanguageMapping.put("py",Report.Language.PYTHON); suffixLanguageMapping.put("html",Report.Language.ONLYVIEW);
// suffixLanguageMapping.put("jsp",Report.Language.JSP); suffixLanguageMapping.put("js",Report.Language.JAVASCRIPT);
// suffixLanguageMapping.put("html",Report.Language.ONLYVIEW); suffixLanguageMapping.put("go",Report.Language.GO);
// suffixLanguageMapping.put("js",Report.Language.JAVASCRIPT);
// suffixLanguageMapping.put("go",Report.Language.GO); List<Rule> ruleList = new ArrayList<>();
// //com.mysql.cj.jdbc.Driver//com.mysql.jdbc.Driver
// List<Rule> ruleList = new ArrayList<>(); ruleList.add(new Rule("com.mysql.cj.jdbc.Driver","建议修改为postgresql数据库驱动"));
// //com.mysql.cj.jdbc.Driver//com.mysql.jdbc.Driver ruleList.add(new Rule("com.mysql.jdbc.Driver","建议修改为postgresql数据库驱动"));
// ruleList.add(new Rule("com.mysql.cj.jdbc.Driver","建议修改为postgresql数据库驱动")); //net.sourceforge.jtds.jdbc.Driver//sqlserver
// ruleList.add(new Rule("com.mysql.jdbc.Driver","建议修改为postgresql数据库驱动")); ruleList.add(new Rule("net.sourceforge.jtds.jdbc.Driver","建议修改为postgresql数据库驱动"));
// //net.sourceforge.jtds.jdbc.Driver//sqlserver //COM.ibm.db2.jdbc.app.DB2Driver//com.ibm.db2.jcc.DB2Driver//COM.ibm.db2.jdbc.net.DB2Driver//com.ibm.db2.jcc.DB2Driver
// ruleList.add(new Rule("net.sourceforge.jtds.jdbc.Driver","建议修改为postgresql数据库驱动")); ruleList.add(new Rule("DB2Driver","建议修改为postgresql数据库驱动"));
// //COM.ibm.db2.jdbc.app.DB2Driver//com.ibm.db2.jcc.DB2Driver//COM.ibm.db2.jdbc.net.DB2Driver//com.ibm.db2.jcc.DB2Driver //oracle.jdbc.OracleDriver//oracle.jdbc.driver.OracleDriver
// ruleList.add(new Rule("DB2Driver","建议修改为postgresql数据库驱动")); ruleList.add(new Rule("OracleDriver","建议修改为postgresql数据库驱动"));
// //oracle.jdbc.OracleDriver//oracle.jdbc.driver.OracleDriver
// ruleList.add(new Rule("OracleDriver","建议修改为postgresql数据库驱动")); ruleList.add(new Rule("mysql-connector-java","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.microsoft.sqlserver","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("mysql-connector-java","建议修改为postgresql依赖声明")); ruleList.add(new Rule("com.oracle","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.microsoft.sqlserver","建议修改为postgresql依赖声明")); ruleList.add(new Rule("org.mariadb.jdbc","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.oracle","建议修改为postgresql依赖声明")); ruleList.add(new Rule("com.sap.cloud.db.jdbc","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.mariadb.jdbc","建议修改为postgresql依赖声明")); ruleList.add(new Rule("com.ibm.informix","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.sap.cloud.db.jdbc","建议修改为postgresql依赖声明")); ruleList.add(new Rule("org.firebirdsql.jdbc","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.ibm.informix","建议修改为postgresql依赖声明")); ruleList.add(new Rule("org.hsqldb","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.firebirdsql.jdbc","建议修改为postgresql依赖声明")); ruleList.add(new Rule("com.h2database","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.hsqldb","建议修改为postgresql依赖声明")); ruleList.add(new Rule("org.apache.derby","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.h2database","建议修改为postgresql依赖声明")); ruleList.add(new Rule("org.mongodb","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.apache.derby","建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.mongodb","建议修改为postgresql依赖声明")); ruleList.add(new Rule("public native","这里用到了JNI"));
// ruleList.add(new Rule("<packaging>jar</packaging>","建议修改打包方式为war包并排除掉springboot内置的tomcat,以部署到国产化中间件上"));
// ruleList.add(new Rule("public native","这里用到了JNI")); ruleList.add(new Rule("WebOffice","这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("<packaging>jar</packaging>","建议修改打包方式为war包并排除掉springboot内置的tomcat,以部署到国产化中间件上")); ruleList.add(new Rule("webOffice","这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("WebOffice","这里用到了weboffice文档展示编辑插件")); ruleList.add(new Rule("weboffice","这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("pdfobject.min.js","这里用到了pdf文档展示插件")); ruleList.add(new Rule("Weboffice","这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("pdfobject.js","这里用到了pdf文档展示插件")); ruleList.add(new Rule("pdfobject.min.js","这里用到了pdf文档展示插件"));
// ruleList.add(new Rule(".swf","这里用到了flash流媒体播放插件")); ruleList.add(new Rule("pdfobject.js","这里用到了pdf文档展示插件"));
ruleList.add(new Rule(".swf","这里用到了flash流媒体播放插件"));
// //String[] projectSrc = {"D:\\project\\testAccess\\rhasspy-master"};
// //多个子项目 String path = Inspector.class.getProtectionDomain().getCodeSource().getLocation().getFile();
// String[] projectSrc = {"D:\\project\\testAccess\\SpringBoot-Labs-master"/*"D:\\project\\bservice","D:\\project\\debug","D:\\project\\glutton"*/}; String decode = null;
// //String[] projectSrc = {"D:\\project\\testAccess\\Telegram-master"}; try {
// for(String s:projectSrc){ decode = URLDecoder.decode(path, "UTF-8");
// Project project = new Project(); } catch (UnsupportedEncodingException e) {
// project.setCodeUrl(s); e.printStackTrace();
// Inspector inspector = new Inspector(project,suffixLanguageMapping,ruleList); }
// Report inspect = inspector.inspect(); File outfile = new File(decode);
// System.out.println("语言:"+inspect.getLanguage()+" 数据库:"+inspect.getDatabaseType()+" 依赖管理:"+inspect.getDependenceManagement()+" 文件数量:"+inspect.getFileNum()+" 代码行数:"+inspect.getLineNum());
// for(Warn warn:inspect.getWarnList()){ int i = 0;
// System.out.println("\t"+warn); System.out.println("请输入文件夹路径,该文件夹中包含多个项目");
// } Scanner scanner = new Scanner(System.in);
// //System.out.println(inspect); String line = scanner.nextLine();
// } File file = new File(line);
// System.out.println(LocalDateTime.now()); File[] files = file.listFiles();
for(File file1:files) {
Project project = new Project();
project.setCodeUrl(file1.getAbsolutePath());
Report report = new Inspector(project, suffixLanguageMapping, ruleList, "aaa").inspect();
File file2 = new File(outfile.getParent()+"/评估报告"+i+++".txt");
if(file2.exists()){
file2.delete();
}
try {
System.out.println("生成报告文件"+file2.getAbsolutePath());
file2.createNewFile();
FileWriter writer = new FileWriter(file2);
writer.write("系统名称:"+file1.getName()+"\n");
writer.write("评估时间:"+new Date()+"\n\n");
writer.write("语言:"+report.getLanguage()+"\t");
writer.write("依赖管理工具:"+report.getDependenceManagement()+"\t");
writer.write("是否前后端分离:"+report.getIsSeparate()+"\t");
writer.write("架构:"+report.getFramework()+"\n");
writer.write("数据库类型:"+report.getDatabaseType()+"\t");
writer.write("文件数量:"+report.getFileNum()+"\t");
writer.write("代码行数:"+report.getLineNum()+"\n\n");
int j = 1;
for(Warn warn:report.getWarnList()){
writer.write(j+++"、所在文件:"+warn.getPath()+" 行数:"+warn.getLine()+"行 关键字:"+warn.getKeyWord()+"\n"
+"建议:"+warn.getSuggest());
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
private String uuid; private String uuid;
...@@ -205,7 +235,7 @@ public class Inspector { ...@@ -205,7 +235,7 @@ public class Inspector {
for(Rule rule:ruleList){ for(Rule rule:ruleList){
if (s.indexOf(rule.getTarget())>-1){ if (s.indexOf(rule.getTarget())>-1){
warnList.add(new Warn(file.toString().substring(Const.UPLOAD_LOCATION.length()),i+1,rule.getTarget(),rule.getReplacing())); warnList.add(new Warn(file.toString()/*.substring(Const.UPLOAD_LOCATION.length())*/,i+1,rule.getTarget(),rule.getReplacing()));
} }
} }
} }
......
package com.zjty.adaptationmaster.utils;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.*;
@Component
public class SeleniumUtils {
@Value("${driverweb}")
private String driverweb;
public WebDriver initfifox() {
System.out.println(driverweb);
System.setProperty("webdriver.gecko.driver", driverweb);// 设置驱动类型和位置
WebDriver driver = new FirefoxDriver();
return driver;
}
public String ElementAction(List<TestCase> steps) {
WebDriver driver=null;
try {
driver=initfifox();
Random random=null;
for (TestCase step : steps) {
Thread.sleep(1000);
if(step.getAction().equalsIgnoreCase("get")){
driver.get(step.getElement());
}else if(step.getAction().equalsIgnoreCase("sendkeys")){
String value = step.getValue() == null ? "" : step.getValue();
if(value.equalsIgnoreCase("random")){
random=new Random();
int i = random.nextInt(1000)+1000;
value="test"+i;
}
// driver.findElement(By.xpath(step.getElement())).sendKeys(value);
WebElement webElement = selectType(step.getMethod(), step.getElement(), driver);
webElement.sendKeys(value);
System.out.println(step.getTitle()+": "+step.getElement()+" "+step.getMethod()+" "+step.getAction()+" "+value);
}else if(step.getAction().equalsIgnoreCase("click")){
// driver.findElement(By.xpath(step.getElement())).click();
WebElement webElement = selectType(step.getMethod(), step.getElement(), driver);
webElement.click();
System.out.println(step.getTitle()+": "+step.getElement()+" "+step.getMethod()+" "+step.getAction()+" ");
}else if(step.getAction().equalsIgnoreCase("gettext")){
WebElement webElement = selectType(step.getMethod(), step.getElement(), driver);
if("errorMsg".equalsIgnoreCase(step.getElement())){
if("".equals(webElement.getText())){
System.out.println("登录成功!");
}
}else {
webElement.getText();
System.out.println(webElement.getText());
}
}else if(step.getAction().equalsIgnoreCase("readonly")){
String value = step.getValue() == null ? "" : step.getValue();
JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;
//remove readonly attribute
removeAttribute.executeScript("var setDate=document.getElementById(\""+step.getElement()+"\");setDate.removeAttribute('placeholder');");
WebElement webElement = selectType(step.getMethod(), step.getElement(), driver);
webElement.sendKeys("1990-01-02");
System.out.println(step.getTitle()+": "+step.getElement()+" "+step.getMethod()+" "+step.getAction()+" "+value);
}else if(step.getAction().equalsIgnoreCase("register")){
String value = step.getValue() == null ? "" : step.getValue();
if(value.equals(driver.getCurrentUrl())){
String text = driver.findElement(By.xpath(step.getElement())).getText();
System.out.println(text);
}else {
String errorMsg = driver.findElement(By.id("errorMsg")).getText();
System.out.println(errorMsg);
}
}
}
}catch (Exception e){
System.out.println(e.getMessage());
}finally {
driver.quit();
if(driver!=null){
driver=null;
}
}
return null;//目前没有用,预留返回字段
}
private WebElement selectType(String method, String element, WebDriver driver) {
WebElement element1=null;
if(method.equalsIgnoreCase("xpath")){
element1 = driver.findElement(By.xpath(element));
}else if(method.equalsIgnoreCase("css")){
element1=driver.findElement(By.cssSelector(element));
}else if(method.equalsIgnoreCase("id")){
element1=driver.findElement(By.id(element));
}else if(method.equalsIgnoreCase("name")){
element1=driver.findElement(By.name(element));
}
return element1;
}
}
package com.zjty.adaptationmaster.utils;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* <p>Description : assess
* <p>Date : 2020/1/3 17:04
* <p>@author : C
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestCase {
/**
* 标题
*/
@Excel(name = "用例标题")
private String title;
/**
* 前置条件
*/
@Excel(name = "前置条件")
private String condition;
/**
* 步骤
*/
@Excel(name = "步骤")
private String step;
/**
* 元素
*/
@Excel(name = "元素")
private String element;
/**
* 方式
*/
@Excel(name = "方式")
private String method;
/**
* 对象
*/
@Excel(name = "对象")
private String obj;
/**
* 动作
*/
@Excel(name = "动作")
private String action;
@Excel(name = "参数")
private String value;
/**
* 期望
*/
@Excel(name = "期望")
private String respect;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论