Tôi đồng ý với @dmeister, nhưng với mã đường ống (Jenkinsfile) Tôi đề nghị một thử/nắm bắt và sau đó phân tích lỗi. Bằng cách này bạn có thể xác định nếu bạn chỉ nhận được bit trạng thái từ pylint (xem các tài liệu pylint), cho dù pylint báo cáo một lỗi sử dụng, hoặc cho dù đó là một thảm họa thất bại:
try {
sh 'pylint --output-format=parseable my_module'
} catch (pylint_rc) {
// pylint_rc will be of the form
// "hudson.AbortException: script returned exit code NN"
// where NN is 1-63 and represents bit field;
// bits 0-4 indicate lint-ish issues in analyzed code,
// bit 5 indicates pylint usage error
echo "pylint_rc= \'$pylint_rc\'"
String rc = "$pylint_rc"
String code = rc.split()[5]
echo "Isolated return code string value $code"
int value = code.toInteger()
// catastrophic/crash error returns a 1; else there is a pylint return code
int error_bits_code = value & 0x20
int lint_bits_code = value & 0x1f
echo "pylint error_bits_code=$error_bits_code ; lint_bits_code=$lint_bits_code"
if ((value == 1) || (error_bits_code != 0)) {
currentBuild.result = "FAILURE"
throw pylint_rc
}
}
Apologies để Groovy chủ nghĩa thuần túy - groovy không phải của tôi, vì vậy tôi chắc chắn điều này có thể được cải thiện trên - cho tôi biết. Có một lỗ đã biết: nếu pylint phát hiện chỉ các lỗi kiểu "gây tử vong" (bit 0) và không có vấn đề nào khác (bit 1-4 không được thiết lập) thì mã này sẽ ném một ngoại lệ sai. Nhưng mã của tôi gắn cờ tấn các vấn đề, vì vậy đó không phải là vấn đề đối với tôi. Bản sửa lỗi (? Parse error msg?) Có thể không quan trọng đối với người có móc xiên.
Nguồn
2017-07-28 18:47:33
Chết tiệt thẳng. Tôi đã sửa lỗi lint.py và phát hiện ra một cuộc gọi sys.exit (self.linter.msgstatus) trong đó không thể tìm thấy msgstatus trong ngữ cảnh. Thay thế điều này bằng 0 đã làm việc và bây giờ các bản dựng đang được tăng cường. – Gobliins