From fa13ec406ab330d350e32842bbe745730d15574a Mon Sep 17 00:00:00 2001 From: HopeLi <1278288511@qq.com> Date: Tue, 8 Jul 2025 17:36:41 +0800 Subject: [PATCH] =?UTF-8?q?0708=20ljc=20=20=20afl=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=93=8D=E4=BD=9C=E4=BB=A5=E5=8F=8A=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E6=93=8D=E4=BD=9C=E4=BB=A5=E5=8F=8A=E6=97=B6=E5=BA=8F?= =?UTF-8?q?=E8=A1=A8=E6=93=8D=E4=BD=9C=E7=AD=89=E6=8E=A5=E5=8F=A3=E5=BC=80?= =?UTF-8?q?=E5=8F=91=EF=BC=8C=E5=8C=85=E5=90=AB=E5=88=86=E7=89=87=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BB=A5=E5=8F=8A=E6=96=87=E4=BB=B6=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/casic/ci/api/AflManagerController.java | 9 ++++ .../resp/aflManager/AflImperfectionResp.java | 18 +++++++ .../aflManager/AflSeedInfoService.java | 3 ++ .../impl/AflSeedInfoServiceImpl.java | 49 +++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/aflManager/AflImperfectionResp.java diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AflManagerController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AflManagerController.java index 8df52304..fcc909a6 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AflManagerController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AflManagerController.java @@ -94,6 +94,15 @@ public class AflManagerController { } + @PostMapping(path="/findImperfection") + public CommonResult findImperfection(@RequestBody @Valid AflManagerReq req) throws SftpUploadUtil.SftpUploadException { + + AflImperfectionResp resp = aflSeedInfoService.findImperfection(req); + + return CommonResult.success(resp); + } + + @PostMapping(path="/saveAflSeedInfo") public CommonResult saveAflSeedInfo(@RequestBody @Valid AflManagerReq req) throws SftpUploadUtil.SftpUploadException { diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/aflManager/AflImperfectionResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/aflManager/AflImperfectionResp.java new file mode 100644 index 00000000..4b040f00 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/aflManager/AflImperfectionResp.java @@ -0,0 +1,18 @@ +package cd.casic.ci.process.dto.resp.aflManager; + +import lombok.Data; + +/** + * @ClassName ReportResp + * @Author hopeli + * @Date 2025/5/10 10:53 + * @Version 1.0 + */ +@Data +public class AflImperfectionResp { + private Integer imperfectionCount = 0; + + private Integer verifiedCount = 0; + + private Integer unverifiedCount = 0; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/AflSeedInfoService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/AflSeedInfoService.java index e8c72567..ebc73cbf 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/AflSeedInfoService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/AflSeedInfoService.java @@ -1,6 +1,7 @@ package cd.casic.ci.process.process.service.aflManager; import cd.casic.ci.process.dto.req.aflManager.AflManagerReq; +import cd.casic.ci.process.dto.resp.aflManager.AflImperfectionResp; import cd.casic.ci.process.dto.resp.aflManager.SeedsCountResp; import cd.casic.ci.process.process.dataObject.aflManager.AflSeedInfo; import cd.casic.ci.process.util.SftpUploadUtil; @@ -23,4 +24,6 @@ public interface AflSeedInfoService extends IService { void saveAflSeedInfo(@Valid AflManagerReq req); void updateHistoryPipelineIdByAflSeedInfo(@Valid AflManagerReq req); + + AflImperfectionResp findImperfection(@Valid AflManagerReq req); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflSeedInfoServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflSeedInfoServiceImpl.java index 0053d5fc..0e394675 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflSeedInfoServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflSeedInfoServiceImpl.java @@ -1,12 +1,14 @@ package cd.casic.ci.process.process.service.aflManager.impl; import cd.casic.ci.process.dto.req.aflManager.AflManagerReq; +import cd.casic.ci.process.dto.resp.aflManager.AflImperfectionResp; import cd.casic.ci.process.dto.resp.aflManager.SeedsCountResp; import cd.casic.ci.process.dto.resp.resource.ResourceFindResp; import cd.casic.ci.process.engine.constant.PipelineVariableConstant; import cd.casic.ci.process.engine.manager.RunContextManager; import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.process.dao.aflManager.AflSeedInfoDao; +import cd.casic.ci.process.process.dataObject.aflManager.AflInfo; import cd.casic.ci.process.process.dataObject.aflManager.AflSeedInfo; import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine; import cd.casic.ci.process.process.service.aflManager.AflSeedInfoService; @@ -289,4 +291,51 @@ public class AflSeedInfoServiceImpl extends ServiceImpl files = SftpUploadUtil.listFilesInRemoteDirectory( + resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + seedFilePath); + + if (!CollectionUtils.isEmpty(files)){ + aflImperfectionResp.setImperfectionCount(files.size()); + } + + //查询已验证和未验证缺陷数 + AflInfo aflInfo = SftpUploadUtil.downloadFileSftpForInputStreamAndSetAflInfo(resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(),null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats"); + if (!ObjectUtils.isEmpty(aflInfo)){ + aflImperfectionResp.setVerifiedCount(Integer.parseInt(aflInfo.getSavedCrashes())); + aflImperfectionResp.setUnverifiedCount(Integer.parseInt(aflInfo.getPendingFavs())); + } + } catch (Exception e) { + e.printStackTrace(); + } + return aflImperfectionResp; + } }