Tôi đã tải xuống và sửa đổi mã plugin Violations để hiển thị bảng vi phạm cho các tệp không có mã nguồn và sau đó biên dịch lại plugin Violations (và tải plugin đã sửa đổi của tôi vào Jenkins theo cách thủ công).
Tên tệp cũng không hiển thị như bạn có thể thấy bằng ảnh chụp màn hình ban đầu của tôi, hàm "getFileNameAlt" vừa nhận được tên và dòng "File: $ {it.fileNameAlt}" trong tập lệnh jelly bên dưới hiển thị nó (xem liên kết đến ảnh chụp màn hình bên dưới).
tôi đã thêm dòng sau vào ~ \ vi phạm \ src \ chính \ java \ hudson \ plugins \ vi phạm \ làm \ FileModelProxy.java, để render bảng:
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();
}
Và sau đó cập nhật ~ \ vi phạm \ target \ classes \ hudson \ plugins \ violation \ render \ FileModelProxy \ index.jelly tập tin thêm nó ngay trên mã sẽ hiển thị các vi phạm trong mã nguồn (mà đã làm việc cho tôi), nó là "" tóm tắt dòng dưới đây :
<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>
Cuối cùng tôi đã chơi với tệp style.css một chút, thêm một định nghĩa bảng phong cách gọi là "vi phạm" (~ \ vi phạm \ mục tiêu \ vi phạm \ 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;
}
Bức tranh dưới đây cho thấy bảng kết quả cho một tập tin mà không có mã nguồn. Trong trường hợp của tôi các tập tin không kết thúc bằng "cs"
http://i.stack.imgur.com/StChP.jpg
Nguồn
2013-05-16 16:03:27
Bạn có cung cấp đường dẫn đến file nguồn của bạn trong 'Source Pattern Path'? Ở cuối phần cài đặt cho plugin Vi phạm trong cấu hình dự án của bạn. – Petrik
Phải bao gồm thông tin đó trong câu hỏi ban đầu. Tôi hiện đang chạy Jenkins 1.514 với phiên bản plugin Violations 0.7.15. –