我正在尝试将"Checkmarx“静态代码扫描作为一个阶段整合到我的devops管道中。目前,我们的代码使用“蛋糕”文件来导出各个阶段(由PowerShell调用)。
我正在检查Checkmarx.Api的蛋糕支持,但在Checkmarx网站或蛋糕网站上都找不到。NuGet图库有一个蛋糕加载项- https://www.nuget.org/packages/Checkmarx.API/的选项卡。
但并没有分享任何关于公开的合同的信息。
因此,联系社区,看看是否有人在这方面做过任何工作,或有任何参考。将"Checkmarx“集成到构建管道中的任何其他方式(不直接使用插件而不是使用CxCLi)也会有所帮助。
发布于 2021-12-13 09:56:46
正如在GitHub讨论中,您提出了相同的问题中所回答的
蛋糕脚本基于“普通”C#,因此无论Checkmarx.API的用法如何,您都可以简单地将其合并到蛋糕脚本中。可能是这样的:
Task("Scan")
.Does(() =>
{
// place your code here..
});至于使用Checkmarx.API,我建议在Checkmarx.API回购中询问。
可能是这样的:
Task("Scan")
.Does(() =>
{
StartProcess("runCxConsole.cmd", new ProcessSettings
{
Arguments = @"Scan -v -ProjectName ""CxServer/bookname j2"" -CxServer http://localhost -CxUser username -CxPassword admin -LocationType folder -LocationPath ""C:\Data\Projects\Java\bs java"" -preset ""Checkmarx Default"""
});
});(注意:我把这些论点告诉了runCxConsole.cmd 从文件中 --我没有测试这个。)
发布于 2022-01-13 05:25:30
我会将其标记为已关闭,因为我已经能够使用.net HttpClient绕过它,但不幸的是,无法使用Checkmarx蛋糕加载项来实现。我将粘贴示例代码,在添加"ServerCertificateCustomValidationCallback“以返回true之前,我得到了一些ssl eerror
string accessToken = string.Empty;
try
{
using (var httpClientHandler = new HttpClientHandler())
{
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
using (var client = new HttpClient(httpClientHandler))
{
client.BaseAddress = new Uri(CXUrl+"/auth/identity/connect/token");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Add("Accept", "*/*");
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("scope", "access_control_api sast_api"),
new KeyValuePair<string, string>("username", username),
new KeyValuePair<string, string>("password", pwd),
new KeyValuePair<string, string>("client_id", "resource_owner_sast_client"),
new KeyValuePair<string, string>("client_secret", "****************************"),
});
var response = client.PostAsync("", content);
var result = JsonConvert.DeserializeObject<CXAccessToken>(response.Result.Content.ReadAsStringAsync().Result);
accessToken = result.access_token;
}
}
}https://stackoverflow.com/questions/70321482
复制相似问题