IntelliJ IDEA ในปัจจุบันมีเครื่องมือวิเคราะห์โค้ด Java แบบสแตติกที่ทันสมัยที่สุด ซึ่งในแง่ของความสามารถนั้น ได้ละทิ้ง "ทหารผ่านศึก" เช่น เช็คสไตล์ и สปอตบั๊ก. "การตรวจสอบ" จำนวนมากจะตรวจสอบโค้ดในด้านต่างๆ ตั้งแต่รูปแบบการเขียนโค้ดไปจนถึงข้อบกพร่องที่เป็นลักษณะเฉพาะ
อย่างไรก็ตาม ตราบใดที่ผลลัพธ์ของการวิเคราะห์แสดงเฉพาะใน IDE ภายในเครื่องของผู้พัฒนาเท่านั้น ผลลัพธ์เหล่านี้ก็ไม่มีประโยชน์ต่อกระบวนการพัฒนา การวิเคราะห์แบบคงที่ จะต้องดำเนินการ เป็นขั้นตอนแรกของการสร้างไปป์ไลน์ ผลลัพธ์จะต้องกำหนดเกทคุณภาพ และบิลด์ต้องล้มเหลวหากเกทคุณภาพล้มเหลว TeamCity CI เป็นที่ทราบกันว่ารวมเข้ากับ IDEA แต่แม้ว่าคุณจะไม่ได้ใช้ TeamCity คุณก็ยังสามารถลองใช้การตรวจสอบ IDEA บนเซิร์ฟเวอร์ CI อื่นๆ ได้ ฉันเสนอเพื่อดูว่าสิ่งนี้สามารถทำได้โดยใช้ปลั๊กอิน IDEA Community Edition, Jenkins และคำเตือน NG
ในตอนแรก แนวคิดในการเรียกใช้ IDE (แอปพลิเคชันเดสก์ท็อป!) ภายในระบบ CI ที่ไม่มีอินเทอร์เฟซแบบกราฟิกอาจดูน่าสงสัยและลำบากมาก โชคดีที่ผู้พัฒนา IDEA ได้ให้ความสามารถในการเรียกใช้ การจัดรูปแบบรหัส и การตรวจสอบ จากบรรทัดคำสั่ง นอกจากนี้ ในการเรียกใช้ IDEA ในโหมดนี้ ระบบย่อยแบบกราฟิกไม่จำเป็น และงานเหล่านี้สามารถดำเนินการบนเซิร์ฟเวอร์ด้วยเชลล์ข้อความ
การตรวจสอบจะเริ่มขึ้นโดยใช้สคริปต์ bin/inspect.sh จากไดเร็กทอรีการติดตั้ง IDEA พารามิเตอร์ที่จำเป็นคือ:
ด้วยตัวของมันเอง ทางออกแนะนำให้ตัวเองบรรจุ JDK ร่วมกับ IDEA Community Edition ลงในคอนเทนเนอร์ในรูปแบบที่พร้อมจะ "ตั้งค่า" ในโครงการที่วิเคราะห์ มาเลือกคอนเทนเนอร์ฐานที่เหมาะสมกัน และนี่คือไฟล์ Docker ที่เราได้รับ:
ไฟล์นักเทียบท่า
FROM openkbs/ubuntu-bionic-jdk-mvn-py3
ARG INTELLIJ_VERSION="ideaIC-2019.1.1"
ARG INTELLIJ_IDE_TAR=${INTELLIJ_VERSION}.tar.gz
ENV IDEA_PROJECT_DIR="/var/project"
WORKDIR /opt
COPY jdk.table.xml /etc/idea/config/options/
RUN wget https://download-cf.jetbrains.com/idea/${INTELLIJ_IDE_TAR} &&
tar xzf ${INTELLIJ_IDE_TAR} &&
tar tzf ${INTELLIJ_IDE_TAR} | head -1 | sed -e 's//.*//' | xargs -I{} ln -s {} idea &&
rm ${INTELLIJ_IDE_TAR} &&
echo idea.config.path=/etc/idea/config >> idea/bin/idea.properties &&
chmod -R 777 /etc/idea
CMD idea/bin/inspect.sh ${IDEA_PROJECT_DIR} ${IDEA_PROJECT_DIR}/.idea/inspectionProfiles/Project_Default.xml ${IDEA_PROJECT_DIR}/target/idea_inspections -v2
การใช้ตัวเลือก idea.config.path เราให้ IDEA ค้นหาการกำหนดค่าส่วนกลางในโฟลเดอร์ /etc/ideaเนื่องจากโฮมโฟลเดอร์ของผู้ใช้ในสภาพการทำงานใน CI เป็นสิ่งที่ไม่มีกำหนดและมักจะหายไปโดยสิ้นเชิง
นี่คือลักษณะของไฟล์ที่คัดลอกไปยังคอนเทนเนอร์ jdk.table.xmlซึ่งมีพาธไปยัง OpenJDK ที่ติดตั้งภายในคอนเทนเนอร์ (อาจใช้ไฟล์ที่คล้ายกันจากไดเร็กทอรีการตั้งค่า IDEA ของคุณเอง):