gpt4 book ai didi

jenkins - 在 Jenkins Violations 插件中单击 FxCop 结果会导致空白页面

转载 作者:行者123 更新时间:2023-12-04 15:12:54 25 4
gpt4 key购买 nike

我有一份 Jenkins 工作,我在其中指定了类似以下 FxCop 命令的内容:

FxCopCmd.exe"/file:"test.dll" /out:"FxCop_Output.xml" /ignoregeneratedcode /project:"C:\Jenkins\extra\Modified_Rules.FxCop" /s /searchgac

当 Jenkins 作业运行时,它会发现许多代码违规,并显示一个图表以及一个文件名列表,其中包含文件中的违规数量。但是,如果我点击一个非 C-Sharp 文件,我会进入一个带有红色三角形感叹号的页面,但是没有显示代码,也没有 FxCop 错误列表。

http://i.stack.imgur.com/VNKF6.jpg

我缺少某种 FxCop 配置吗?如何让 Violations 插件显示这些文件的代码违规?

最佳答案

我最终下载并修改了 Violations 插件代码以显示没有源代码的文件的违规表,然后重新编译 Violations 插件(并手动将修改后的插件加载到 Jenkins 中)。

正如您在我的原始屏幕截图中看到的那样,文件名也没有显示出来,“getFileNameAlt”函数只是正确地获取了名称,下面的 jelly 脚本中的“File: ${it.fileNameAlt}”行显示了它(请参阅链接截图如下)。

我将以下内容添加到 ~\violations\src\main\java\hudson\plugins\violations\render\FileModelProxy.java,以呈现表:

public String getFileNameAlt() {
return new File(fileModel.getDisplayName()).getName();
}

public String getSummaryTable() {

StringBuilder gst = new StringBuilder();
int count = 0;

gst.append(" <table class='violations' width='100%'>\n");
gst.append(" <tr>\n");
gst.append(" <td class='violations-header'> # </td>\n");
gst.append(" <td class='violations-header'> Type </td>\n");
gst.append(" <td class='violations-header'> Class</td>\n");
gst.append(" <td class='violations-header'> Message</td>\n");
gst.append(" <td class='violations-header'> Description</td>\n");
gst.append(" </tr>\n");

Set<Violation> violations = fileModel.getLineViolationMap().get(0);

for (Violation v: violations) {
++count;
gst.append(" <tr>\n");
gst.append(" <td class='violations'>");
gst.append(count);
gst.append("</td>\n");
gst.append(" <td class='violations'>");
gst.append(v.getType());
gst.append("</td>\n");
gst.append(" <td class='violations'>");
gst.append(v.getSource());
gst.append("</td>\n");
gst.append(" <td class='violations'>");
gst.append(v.getMessage());
gst.append("</td>\n");
gst.append(" <td class='violations'>");
gst.append(v.getPopupMessage());
gst.append("</td>\n");
gst.append(" </tr>\n");
}
//}
gst.append(" </table>\n");
gst.append("<p><br>\n");
gst.append("<h3>Total Number of violations: \n");
gst.append(count);
gst.append("</h3><p>\n");
return gst.toString();
}

然后更新 ~\violations\target\classes\hudson\plugins\violations\render\FileModelProxy\index.jelly 文件,将其添加到显示源代码中违规的代码上方(这对我有用),它是下面的“”摘要行:
<j:set
var="iconDir"
value="${rootURL}/plugin/violations/images/16x16"/>

<j:set var="href" value="${it.showLines}"/>
<h1><img src="${image}"/> File: ${it.fileNameAlt}</h1>

<j:out value="${it.summaryTable}"/>

<j:forEach var="t" items="${model.typeMap.entrySet()}">
<table class="pane">
<tbody>
<tr><td class="pane-header" colspan="5"><j:out value="${it.typeLine(t.key)}"/></td></tr>
<j:forEach var="v" items="${t.value}">
<tr>
<td class="pane">
<j:if test="${href}">
<a href="#line${v.line}">${v.line}</a>
</j:if>
<j:if test="${!href}">
${v.line}
</j:if>
</td>
<!--<td class="pane">${v.source}</td> -->
<td class="pane"><j:out value="${it.severityColumn(v)}"/></td>
<td class="pane" width="99%">${v.message}</td>
</tr>
</j:forEach>
</tbody>
</table>
<p></p>
</j:forEach>

最后,我稍微处理了 style.css 文件,添加了一个名为“violations”的表格样式定义(~\violations\target\violations\css\style.css):
.violations  {
margin-top: 4px;
}
.violations td {
padding: 4px 4px 3px 4px;
}

table.violations {
width: 100%;
border-collapse: collapse;
border: 1px #bbb solid;
}
table.violations > tbody > tr > td:last-child {
border-right: 1px #bbb solid;
}

td.violations {
border: 1px #bbb solid;
padding: 3px 4px 3px 4px;
vertical-align: middle;
}

td.violations-header {
border: 1px #bbb solid;
border-right: none;
border-left: none;
background-color: #f0f0f0;
font-weight: bold;
}

th.violations {
border: 1px #bbb solid;
font-weight: bold;
}

下图显示了一个没有源代码的文件的结果表。在我的情况下,文件不以“.cs”结尾

http://i.stack.imgur.com/StChP.jpg

关于jenkins - 在 Jenkins Violations 插件中单击 FxCop 结果会导致空白页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15905131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com