2013-04-09 9 views
6

की ओर जाता है मैं जहाँ मैं निम्नलिखित FxCop आदेश की तरह कुछ निर्दिष्ट एक जेनकींस नौकरी:क्लिक करने से रिक्त पृष्ठ

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

जब जेनकींस काम यह संहिता के उल्लंघन के एक नंबर पाता चलाया जाता है , और फ़ाइल में उल्लंघनों की संख्या के साथ एक ग्राफ के साथ-साथ फ़ाइल नामों की एक सूची प्रदर्शित करता है। हालांकि, अगर मैं एक गैर-सी-शार्प फ़ाइल पर क्लिक करता हूं, तो मुझे एक लाल त्रिकोण में विस्मयादिबोधक बिंदु वाले पृष्ठ पर ले जाया जाता है, हालांकि कोई कोड प्रदर्शित नहीं होता है, न ही FxCop त्रुटियों की एक सूची है।

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

वहाँ मैं याद कर रहा हूँ FxCop विन्यास के कुछ प्रकार है? इन फ़ाइलों के लिए कोड उल्लंघन प्रदर्शित करने के लिए मैं उल्लंघन प्लगइन कैसे प्राप्त कर सकता हूं?

+0

आप 'स्रोत पथ पैटर्न' में अपनी स्रोत फ़ाइल के लिए पथ प्रदान किया था पर समाप्त नहीं होता? यह आपके प्रोजेक्ट कॉन्फ़िगरेशन में उल्लंघन प्लगइन के लिए सेटिंग्स के अंत में है। – Petrik

+0

उस जानकारी को मूल प्रश्न में शामिल करना चाहिए था। अब मैं जेनकिंस 1.514 को उल्लंघन प्लगइन संस्करण 0.7.15 के साथ चला रहा हूं। –

उत्तर

4

मैंने उन फ़ाइलों के उल्लंघन के लिए तालिकाओं के उल्लंघन की एक तालिका प्रदर्शित करने के लिए उल्लंघनों प्लगइन कोड को डाउनलोड और संशोधित करना समाप्त कर दिया, और फिर उल्लंघन प्लगइन को पुन: संकलित किया (और मैन्युअल रूप से मेरी संशोधित प्लगइन जेनकींस में लोड कर रहा है)।

फ़ाइल नाम भी दिखाई नहीं दे रहा था जैसा कि आप मेरे मूल स्क्रीन शॉट द्वारा देख सकते हैं, "getFileNameAlt" फ़ंक्शन को ठीक से नाम और "फ़ाइल: $ {it.fileNameAlt}" डिस्प्ले नीचे जेली स्क्रिप्ट में मिलता है यह (नीचे स्क्रीनशॉट के लिए लिंक देखें)।

मैं \ उल्लंघन ~ के लिए निम्न जोड़ा \ src \ मुख्य \ जावा \ हडसन \ plugins \ उल्लंघन \ प्रस्तुत करना \ 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(); 
} 

और फिर अद्यतन ~ \ उल्लंघन \ target \ classes \ hudson \ plugins \ violations \ rendering \ 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 फ़ाइल को थोड़ा सा खेला, एक तालिका शैली "उल्लंघन" कहा जाता है परिभाषा जोड़ने (~ \ उल्लंघन \ लक्ष्य \ उल्लंघन \ सीएसएस \ 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

+0

मैंने आपकी सलाह का पालन किया और प्लगइन तय किया। इसका एक संस्करण यहां डाउनलोड किया जा सकता है: https://github.com/MoJo2600/violations-plugin/releases – MoJo2600

+0

स्टाइलकॉप के साथ एक ही फैशन में समस्याओं को ठीक करना संभव होगा? – Kolky

+0

@ MoJo2600 आपके द्वारा बनाई गई प्लगइन का उपयोग कैसे करें। कृपया –

1

मुझे लगता है कि आप this violations plugin issue देख सकते हैं (जेनकींस जेरा में रिपोर्ट)। StyleCop परिणामों को प्रदर्शित करने वाला एक समान समस्या भी है। क्या आप अपने जेनकींस और उल्लंघन प्लगइन संस्करणों की पुष्टि करने में सक्षम हैं?

संबंधित मुद्दे