원문 캡처 · github.com
원문 캡처 · github.com

PLC Lint는 CODESYS와 PLCopenXML 프로젝트를 분석해 문법상 오류 없이 컴파일되지만 현장에서 문제를 일으킬 수 있는 결함을 찾는 정적 분석 도구다. 웹사이트에서 프로젝트 내보내기 파일을 올려 보고서를 받거나, 파일을 외부로 보내지 않고 로컬에서 실행할 수 있다.

로컬 실행은 Windows용 plc-lint.exe에 .xml 또는 .export 파일을 끌어다 놓거나, Python 3.9 이상에서 python cli.py project.xml을 실행하면 된다. 별도 의존성이 없으며, 네트워크 호출을 하지 않는다는 점은 테스트로 확인하도록 저장소에 테스트가 포함돼 있다. 웹 버전은 공유, 기록, 빌드 간 비교, 인수인계용 프로토콜과 서명 인증서를 추가로 제공한다.

PLCopenXML은 CODESYS 3.5, TwinCAT3, WAGO e!COCKPIT, Schneider EcoStruxure Machine Expert 등에서 내보낸 파일을 지원한다. 로컬 실행에서는 CODESYS의 .export 파일도 분석한다. 이 형식에는 프로그램 외에 장치 트리와 시각화 정보가 포함돼 있어, 센서 유형이 설정되지 않은 채널이나 신호 출력 설정 누락, 화면 요소의 잘못된 변수 연결 등 다섯 가지 장치·시각화 관련 검사도 할 수 있다. 다만 .export에서는 작업 구성 형식이 달라 워치독과 중복 Modbus 주소 규칙을 검사하지 않는다.

도구는 호출되지 않는 타이머, 곱셈 전에 값이 잘리는 설정값 변환, 0이 될 수 있는 변수로 나누는 연산, 도달할 수 없는 분기 등을 포함해 43개 규칙을 제공한다. 제작자는 보일러실 프로젝트 8개(CODESYS 3.5 SP17, 점수 62~86/100)에서 실제로 발견된 사례를 제시했다. 규칙과 수정 방법은 RULES.md에서 확인할 수 있고, 예상 결과가 정리된 오류 프로젝트는 examples/에서 받을 수 있다.

GitHub 저장소에는 푸시 때마다 분석하는 Actions도 포함돼 있다. 결과는 작업 요약 페이지에 표시되고 심각도가 높은 항목은 주석으로 남는다. 분석은 실행 러너에서 이뤄지며 네트워크를 호출하지 않는다. 점수나 심각도에 따라 빌드를 통과시킬 수도 있다.

제약도 있다. ST 코드는 줄 단위로 분석하며, CFC·LD·FBD·SFC 같은 그래픽 언어는 이름 출현과 일부 그래프 검사만 다룬다. 그래픽 로직 자체는 분석하지 않으며 보고서에 이 한계를 표시한다. 정적 분석은 시운전이나 FAT, 사양에 따른 로직 검토를 대체하지 않으며 코드의 정확성을 증명하지 않는다. 분석과 전체 보고서는 무료이고, PDF 인증서와 공개 검증 링크를 제공하는 유료 플랜도 있다.