提交 cf800cde authored 作者: zhangshuang's avatar zhangshuang

zs

......@@ -157,6 +157,16 @@
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
</dependencies>
<build>
......
Manifest-Version: 1.0
Main-Class: com.zjty.adaptationmaster.utils.Inspector
......@@ -33,6 +33,10 @@ public class AdaptationController {
System.out.print(JSON.toJSONString(adaptRequest));
return adaptationService.compile(adaptRequest.getProject(),adaptRequest.getUuid());
}
@PostMapping("/uploadDeploy")
public ServerResponse uploadDeploy(@RequestBody AdaptRequest adaptRequest){
return adaptationService.uploadDeploy(adaptRequest.getProject(),adaptRequest.getPath());
}
@PostMapping("/deploy")
public ServerResponse deploy(@RequestBody AdaptRequest adaptRequest){
return adaptationService.deploy(adaptRequest.getProject(),adaptRequest.getUuid());
......
......@@ -4,6 +4,7 @@ import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.service.InspectService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
......@@ -11,8 +12,15 @@ import org.springframework.web.bind.annotation.*;
public class InspectController {
@Autowired
private InspectService inspectService;
@PutMapping("/inspect")
public ServerResponse inspect(@RequestBody Project projectId){
return inspectService.inspect(projectId);
}
@GetMapping("/{id}")
public ResponseEntity report(@PathVariable Integer id){
return ResponseEntity.ok(inspectService.getReportById(id));
}
}
package com.zjty.adaptationmaster.adaptor.controller;
import com.alibaba.fastjson.JSONObject;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.repository.ReportDao;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("/send")
public class Test {
@Autowired
private ReportDao reportDao;
@PutMapping("/test/{uuid}")
public ServerResponse test(@PathVariable String uuid){
......@@ -21,4 +28,5 @@ public class Test {
}
return ServerResponse.success();
}
}
......@@ -60,7 +60,7 @@ public class Project {
private boolean compileSuccess = false;
@OneToOne
private Report report;
private ReportEntity report;
private boolean deploySuccess = false;
......
package com.zjty.adaptationmaster.adaptor.entity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.ProjectPom;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.utils.Assessor;
import com.zjty.adaptationmaster.utils.Inspector;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -8,25 +12,30 @@ import javax.persistence.*;
import java.nio.file.Path;
import java.util.List;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Report {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private Language language;//语言
private String framework;//架构
private Separate isSeparate;//前后端是否分离
private DatabaseType databaseType;//数据库类型
private int fileNum;
private long lineNum;
private List<Dependency> dependencies;
@Transient
private ProjectPom projectPom;
@Transient
private List<Inspector.Warn> warnList;
private Separate isSeparate;//前后端是否分离
private String compileFilePath;//项目编译文件,如果是maven项目,用maven编译,那么就是pom.xml
public DependenceManagement dependenceManagement;//版本管理方式
@ElementCollection
public List<String> jarPath;//依赖文件的地址列表,用于编译,如果不是用版本管理工具
private String packagePath;
private int fileNum;
public enum DependenceManagement{
MAVEN,GRADLE,ANT
......@@ -38,6 +47,6 @@ public class Report {
MYSQL,ORACLE,SQLSERVER,POSTGRE
}
public enum Language{
JAVA,PYTHON,CPP,JSP,ONLYVIEW
JAVA,PYTHON,CPP,JSP,ASP,ONLYVIEW,UNKNOW,JAVASCRIPT,GO
}
}
package com.zjty.adaptationmaster.adaptor.entity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.utils.Inspector;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.List;
/**
* 返回
* @author Mcj
* @date 2020-01-03 10:33
*/
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ReportEntity {
@Id
@GeneratedValue
private Integer id;
private Report.Language language;//语言
private String framework;//架构
private Report.DatabaseType databaseType;//数据库类型
private int fileNum;
private long lineNum;
@Column(columnDefinition = "text")
private String dependence;
private Report.Separate isSeparate;//前后端是否分离
private String compileFilePath;//项目编译文件,如果是maven项目,用maven编译,那么就是pom.xml
public Report.DependenceManagement dependenceManagement;//版本管理方式
private String packagePath;
public String jarPath;//依赖文件的地址列表,用于编译,如果不是用版本管理工具
private String warnList;
public enum DependenceManagement{
MAVEN,GRADLE,ANT
}
public enum Separate{
WHOLE,SEPARATE
}
public enum DatabaseType{
MYSQL,ORACLE,SQLSERVER,POSTGRE
}
public enum Language{
JAVA,PYTHON,CPP,JSP,ASP,ONLYVIEW
}
}
......@@ -43,6 +43,10 @@ public class Rule {
private String target;//文本匹配目标
private String replacing;//更改方式 全文替换/正则替换
public Rule(String target,String replacing){
this.target = target;
this.replacing = replacing;
}
// public enum MatchType{
// PATH,NAME,SUFFIX,GLOB
// }
......
package com.zjty.adaptationmaster.adaptor.entity.pomEntity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Parent;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PomAnalysis {
private Parent parent;
private String modelVersion;
private String groupId;
private String artifactId;
private String packaging;
private String version;
private String name;
private String url;
private String description;
//private List<Prerequisite> prerequisites;//描述了这个项目构建环境中的前提条件。 -->
//private IssueManagement issueManagement;//项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL
//private CiManagement ciManagement;//项目持续集成信息
//private String inceptionYear;//项目创建年份,4位数字。当产生版权信息时需要使用这个值
//private MailingLists mailingLists;//项目相关邮件列表信息
//private Developers developers;//项目开发者列表
//private Contributors contributors;//项目的其他贡献者列表
//private List<License> licenses;//该元素描述了项目所有License列表。 应该只列出该项目的license列表,不要列出依赖项目的 license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license
//private Scm scm;//SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用
//private Organization organization;//描述项目所属组织的各种属性。Maven产生的文档用
//private Build build;//构建项目需要的信息
//private List<Profile> profiles;//在列的项目构建profile,如果被激活,会修改构建处理
//private List<Module> modules;//模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
//private List<Repository> repositories;//发现依赖和扩展的远程仓库列表
//private List<PluginRepository> pluginRepositiries;//发现插件的远程仓库列表,这些插件用于构建和报表
private List<Dependency> dependencies;
//private Repoting repoting;//该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接
//private DependencyManagement dependencyManagement;//继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息
//private DistributionManagement distributionManagement;//项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库
//private Properties properties;//以值替代名称,Properties可以在整个POM中使用,也可以作为触发条件(见settings.xml配置文件里activation元素的说明)。格式是<name>value</name>
}
package com.zjty.adaptationmaster.adaptor.entity.pomEntity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.List;
@NoArgsConstructor
@Data
public class ProjectPom {
//private Parent parent;
private String modelVersion;
private String groupId;
private String artifactId;
private String packaging;
private String version;
private String name;
private String url;
private String description;
//private List<Prerequisite> prerequisites;//描述了这个项目构建环境中的前提条件。 -->
//private IssueManagement issueManagement;//项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL
//private CiManagement ciManagement;//项目持续集成信息
//private String inceptionYear;//项目创建年份,4位数字。当产生版权信息时需要使用这个值
//private MailingLists mailingLists;//项目相关邮件列表信息
//private Developers developers;//项目开发者列表
//private Contributors contributors;//项目的其他贡献者列表
//private List<License> licenses;//该元素描述了项目所有License列表。 应该只列出该项目的license列表,不要列出依赖项目的 license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license
//private Scm scm;//SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用
//private Organization organization;//描述项目所属组织的各种属性。Maven产生的文档用
//private Build build;//构建项目需要的信息
//private List<Profile> profiles;//在列的项目构建profile,如果被激活,会修改构建处理
//private List<Module> modules;//模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
//private List<Repository> repositories;//发现依赖和扩展的远程仓库列表
//private List<PluginRepository> pluginRepositiries;//发现插件的远程仓库列表,这些插件用于构建和报表
private List<Dependency> dependencies;
//private Repoting repoting;//该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接
//private DependencyManagement dependencyManagement;//继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息
//private DistributionManagement distributionManagement;//项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库
//private Properties properties;//以值替代名称,Properties可以在整个POM中使用,也可以作为触发条件(见settings.xml配置文件里activation元素的说明)。格式是<name>value</name>
}
package com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.List;
@Entity
@NoArgsConstructor
@Data
public class Dependency {
@Id
private int id;
private String groupId;
private String artifactId;
private String version;
/*依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展
名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。
如果设置extensions为 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整
*/
//private String type;
/*依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,
如果你想要构建两个单独的构件成JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生
成两个单独的JAR构件
*/
//private String classifier;
/*
依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。
- compile :默认范围,用于编译
- provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
- runtime: 在执行时需要使用
- test: 用于test任务时使用
- system: 需要外在提供相应的元素。通过systemPath来取得
- systemPath: 仅用于范围为system。提供相应的路径
- optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用
*/
//private String scope;
/*
仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件
系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}
*/
//private String systemPath;
/*
当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的
依赖。此元素主要用于解决版本冲突问题
*/
//private List<Exclusion> exclusions;
/*
可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。
可选依赖阻断依赖的传递性
*/
//private String optional;
// private class Exclusion{
// private String artifactId;
// private String groupId;
// }
//private List<Dependency> parentDependencies;//
//private int reportId;
}
package com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor;
public class Parent {
private String artifactId;
private String groupId;
private String version;
private String relativePath;
}
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Dependency;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.entity.ReportEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface ReportDao extends JpaRepository<Report, Integer>, JpaSpecificationExecutor {
public interface ReportDao extends JpaRepository<ReportEntity, Integer>, JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.AdaptRequest;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.base.response.ServerResponse;
......@@ -21,4 +22,6 @@ public interface AdaptationService {
ServerResponse start(Project project, String uuid);
ServerResponse stop(Project project, String uuid);
ServerResponse uploadDeploy(Project project, String path);
}
......@@ -8,12 +8,16 @@ import com.zjty.adaptationmaster.base.enums.Const;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.adaptor.service.AdaptationService;
import com.zjty.adaptationmaster.utils.*;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
......@@ -21,6 +25,7 @@ import static java.util.stream.Collectors.toList;
@Service
public class AdaptationServiceImpl implements AdaptationService {
Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private Adaptor adaptor;
@Autowired
......@@ -97,6 +102,26 @@ public class AdaptationServiceImpl implements AdaptationService {
return ServerResponse.success(new ApusicDeployer(Const.CTLPATH,Const.MAVENHOME).stop(project.getProjectName(),uuid));
}
@Override
@Transactional
public ServerResponse uploadDeploy(Project project, String path) {
File file = new File(path);
File deployFile = new File(project.getCodeUrl()+"/"+file.getName());
File parentFile = deployFile.getParentFile();
if (!parentFile.exists()||!parentFile.isDirectory()){
parentFile.mkdirs();
}
try {
FileUtils.moveFile(file,deployFile);
} catch (IOException e) {
logger.info("预部署包转存失败"+e.getMessage());
return ServerResponse.error("系统错误,文件上传失败");
}
project.setStage(2);
projectDao.getOne(project.getId()).setStage(2);
return ServerResponse.success();
}
private Project filter(Project pro){
//过滤删除的规则集
List<RuleSet> ruleSets = pro.getRuleSets();
......
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.alibaba.fastjson.JSON;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.entity.ReportEntity;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.adaptor.repository.ReportDao;
import com.zjty.adaptationmaster.adaptor.service.InspectService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.Inspector;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
......@@ -33,17 +38,67 @@ public class InspectServiceImpl implements InspectService {
suffixLanguageMapping.put("cpp",Report.Language.CPP);
suffixLanguageMapping.put("py",Report.Language.PYTHON);
suffixLanguageMapping.put("jsp",Report.Language.JSP);
suffixLanguageMapping.put("asp",Report.Language.ASP);
//suffixLanguageMapping.put("html",Report.Language.ONLYVIEW);
Report report = new Inspector(project, suffixLanguageMapping).inspect();
LoggerFactory.getLogger(getClass()).info("这里rulelist为空,需要设置");
Report report = new Inspector(project, suffixLanguageMapping, new ArrayList<>()).inspect();
ReportEntity reportEntity = new ReportEntity();
reportEntity.setCompileFilePath(report.getCompileFilePath());
reportEntity.setDatabaseType(report.getDatabaseType());
reportEntity.setDependenceManagement(report.getDependenceManagement());
reportEntity.setFileNum(report.getFileNum());
reportEntity.setFramework(report.getFramework());
reportEntity.setIsSeparate(report.getIsSeparate());
reportEntity.setLanguage(report.getLanguage());
reportEntity.setPackagePath(report.getPackagePath());
List<Dependency> dependencies = report.getDependencies();
String s = JSON.toJSONString(dependencies);
List<Inspector.Warn> warnList = report.getWarnList();
String s1 = JSON.toJSONString(warnList);
reportEntity.setWarnList(s1);
List<String> jarPath = report.getJarPath();
String s2 = JSON.toJSONString(jarPath);
reportEntity.setJarPath(s2);
reportEntity.setDependence(s);
if(report.getPackagePath() == null){
report.setPackagePath(project.getCodeUrl());
}
reportDao.save(report);
Project one = projectDao.getOne(project.getId());
one.setReport(report);
ReportEntity reportEntitySave = reportDao.save(reportEntity);
one.setReport(reportEntitySave);
report.setId(reportEntitySave.getId());
return ServerResponse.success(report);
}else{
return ServerResponse.error("未上传源代码");
}
}
@Override
public Report getReportById(Integer id) {
ReportEntity one = reportDao.getOne(id);
Report report = new Report();
report.setId(one.getId());
List<Dependency> dependencies = JSON.parseArray(one.getDependence(), Dependency.class);
report.setDependencies(dependencies);
report.setDatabaseType(one.getDatabaseType());
report.setLanguage(one.getLanguage());
report.setPackagePath(one.getPackagePath());
report.setCompileFilePath(one.getCompileFilePath());
report.setDependenceManagement(one.getDependenceManagement());
report.setFileNum(one.getFileNum());
report.setLineNum(one.getLineNum());
report.setFramework(one.getFramework());
report.setIsSeparate(one.getIsSeparate());
List<Inspector.Warn> warns = JSON.parseArray(one.getWarnList(), Inspector.Warn.class);
report.setWarnList(warns);
List<String> path = JSON.parseArray(one.getJarPath(), String.class);
report.setJarPath(path);
return report;
}
}
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Report;
import com.zjty.adaptationmaster.adaptor.entity.ReportEntity;
import com.zjty.adaptationmaster.base.response.ServerResponse;
public interface InspectService {
ServerResponse inspect(Project projectId);
Report getReportById(Integer id);
}
package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.ProjectPom;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
public class AnalysisPom {
public static ProjectPom analysis(Path pomPath){
List<Dependency> dependencies = new ArrayList<>();
Dependency dependency = new Dependency();
dependency.setGroupId("aaa.bbb");
dependency.setArtifactId("ccc.ddd");
dependency.setVersion("1.0.0");
dependencies.add(dependency);
ProjectPom projectPom = new ProjectPom();
projectPom.setDependencies(dependencies);
return projectPom;
}
}
package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.IOException;
import java.nio.charset.MalformedInputException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class Assessor {
public static void main(String[] args) {
Assessor assessor = new Assessor();
Rule rule = new Rule();
rule.setTarget("aa?*");
rule.setReplacing("建议修改为bb");
List<Rule> rules = new ArrayList<>();
rules.add(rule);
assessor.setRuleList(rules);
Project project = new Project();
project.setCodeUrl("D:\\project\\bservice");
assessor.assess(project);
}
List<Rule> ruleList;
public void setRuleList(List<Rule> ruleList) {
this.ruleList = ruleList;
}
List<Warn> warnList = new ArrayList<>();
int lineNum = 0;
public void assess(Project project){
try {
Files.walkFileTree(Paths.get(project.getCodeUrl()), new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
List<String> allLines;
try {
allLines = Files.readAllLines(file);
}catch (MalformedInputException e){
return FileVisitResult.CONTINUE;
}
lineNum += allLines.size();
for(int i = 0;i<allLines.size();i++){
String s = allLines.get(i);
for(Rule rule:ruleList){
if (s.indexOf(rule.getTarget())>-1){
warnList.add(new Warn(file,i+1,rule.getTarget(),rule.getReplacing()));
}
}
}
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
e.printStackTrace();
}
for(Warn warn:warnList){
System.out.println(warn);
}
}
// public class ProjectFile{
// private Path path;
// private BasicFileAttributes attributes;
// private List<String> allLines;
// }
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Warn{
private Path path;
private int line;
private String keyWord;
private String suggest;
}
}
......@@ -72,7 +72,33 @@ public class FileUtil {
}
}
}
private static void recursiveFiles(String path){
// 创建 File对象
File file = new File(path);
// 取 文件/文件夹
File files[] = file.listFiles();
// 对象为空 直接返回
if(files == null){
return;
}
// 存在文件 遍历 判断
for (File f : files) {
// 判断是否为 文件夹
if(f.isDirectory()){
// 为 文件夹继续遍历
recursiveFiles(f.getAbsolutePath());
// 判断是否为 文件
} else if(f.isFile()){
if("pom.xml".equals(f.getName())){
System.out.println("解析pom");
}
System.out.println(f.getName());
// System.out.println(f.getAbsolutePath());
} else {
System.out.print("未知错误文件");
}
}
}
public static void main(String[] args) {
String filePath = "C:\\Users\\wyl\\Desktop\\alllib.zip";
......
......@@ -5,16 +5,13 @@ import com.zjty.adaptationmaster.adaptor.entity.Rule;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.tomcat.websocket.server.WsServerContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class ReadedFileTask implements Runnable {
......
package com.zjty.adaptationmaster;
import com.zjty.adaptationmaster.adaptor.repository.ReportDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class AdaptationMasterApplicationTests {
@Autowired
private ReportDao reportDao;
}
package com.zjty.adaptationmaster;
public class YmlConfig {
public static void main(String[] args) {
String string = "";
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论