|
|
@ -106,15 +106,15 @@ public class FunctionAnalysisTask extends IAnalysisTask { |
|
|
|
//根据文件的名称获取函数解析器
|
|
|
|
//根据文件的名称获取函数解析器
|
|
|
|
Analysis analysis = AnalysisFactory.getAnalysis(fileName); |
|
|
|
Analysis analysis = AnalysisFactory.getAnalysis(fileName); |
|
|
|
|
|
|
|
|
|
|
|
if (analysis == null){ |
|
|
|
if (analysis == null) { |
|
|
|
throw new BusinessException("获取文件解析器失败,文件名称:"+fileName); |
|
|
|
throw new BusinessException("获取文件解析器失败,文件名称:" + fileName); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//解析文件
|
|
|
|
//解析文件
|
|
|
|
CodeFile codeFile = analysis.analysisFile(new FileInputStream(filePath)); |
|
|
|
CodeFile codeFile = analysis.analysisFile(new FileInputStream(filePath)); |
|
|
|
|
|
|
|
|
|
|
|
//根据函数特征去匹配到开源文件
|
|
|
|
//根据函数特征去匹配到开源文件
|
|
|
|
SolrDocumentList matchOpenFiles = getFeatureSimilarityFromSolr(featureCoreName, codeFile.getFunctionList()); |
|
|
|
SolrDocumentList matchOpenFiles = getFeatureSimilarityFromSolr(featureCoreName, codeFile.getFunctionList()); |
|
|
|
|
|
|
|
|
|
|
|
//计算开源率
|
|
|
|
//计算开源率
|
|
|
|
doAnalysis(matchOpenFiles, sourceFileBaseCoreName, codeFile); |
|
|
|
doAnalysis(matchOpenFiles, sourceFileBaseCoreName, codeFile); |
|
|
@ -238,7 +238,7 @@ public class FunctionAnalysisTask extends IAnalysisTask { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//被测件文本内容
|
|
|
|
//被测件文本内容
|
|
|
|
String sourcefileContent= FileUtil.readUtf8String(analysisFile.getFileUrl()); |
|
|
|
String sourcefileContent = FileUtil.readUtf8String(analysisFile.getFileUrl()); |
|
|
|
|
|
|
|
|
|
|
|
//将文本内容解析成行信息,用于后续文件的开源率计算
|
|
|
|
//将文本内容解析成行信息,用于后续文件的开源率计算
|
|
|
|
List<String> analysisFileLineInfo = SimilarityUtil.getSplitWords(sourcefileContent); |
|
|
|
List<String> analysisFileLineInfo = SimilarityUtil.getSplitWords(sourcefileContent); |
|
|
@ -291,7 +291,9 @@ public class FunctionAnalysisTask extends IAnalysisTask { |
|
|
|
SolrDocument openEntries = md5VersionInfoMap.get(openSourceFileMd5); |
|
|
|
SolrDocument openEntries = md5VersionInfoMap.get(openSourceFileMd5); |
|
|
|
VersionTree versionInfo = versionIdVersionInfoMap.get(openEntries.get("versionId")); |
|
|
|
VersionTree versionInfo = versionIdVersionInfoMap.get(openEntries.get("versionId")); |
|
|
|
String openFilePath = (String) md5VersionInfoMap.get(openSourceFileMd5).getFieldValue("fullPath"); |
|
|
|
String openFilePath = (String) md5VersionInfoMap.get(openSourceFileMd5).getFieldValue("fullPath"); |
|
|
|
|
|
|
|
if (versionInfo == null){ |
|
|
|
|
|
|
|
throw new BusinessException("根据版本ID,未查询到相关的版本信息。versionId:" + openEntries.get("versionId")); |
|
|
|
|
|
|
|
} |
|
|
|
//组装当前开源文件的开源项目信息
|
|
|
|
//组装当前开源文件的开源项目信息
|
|
|
|
MatchOpenFile matchOpenFileInfo = new MatchOpenFile(); |
|
|
|
MatchOpenFile matchOpenFileInfo = new MatchOpenFile(); |
|
|
|
matchOpenFileInfo.setId(IdGenerator.uuid32()) |
|
|
|
matchOpenFileInfo.setId(IdGenerator.uuid32()) |
|
|
|