회사 업무 상 여러 inspection 툴과 지표(metrics)들을 측정하고 개선을 가이드하던 적이 있다. 이 때 개인적인 필요에 의해, 종합적으로 여러 지표들을 분석하는 Code Analyst라는 툴을 만들어 사용했다.
처음 만들 때에 다음과 같은 기준과 목표로 개발을 시작했던 것 같다.
- 인터넷 연결이 되지 않더라구 사용 가능해야 한다.
- 당연히 여러 지표들을 한번에 측정해야 한다.
- 손쉽게 사용할 수 있도록 별도 설치 없이 CLI(Command Line Interface)로 실행 가능
- 확장성을 위해 API 제공
- 오픈소스SW 라이선스를 준수한다.
- Apache License 2.0, MIT, BSD 등의 대부분 문제 없는 라이선스 오픈소스 활용
- GPL 라이선스 배제 : 상업적 활용이 어렵고, 개발된 소스의 공개가 필요 (초기에는 오픈소스로 공개할 목적은 없었음)
- LGPL 라이선스는 활용 가능(단, 소스코드 변경 없어 라이브러리만 활용해야 함)
그러던 중, 과제 점검으로 해당 툴을 사용하게 되었고, 우리 회사뿐만 아니라 외부에서 개발된 프로그램을 우리 회사가 운영이관 받아야 하는 경우에 활용할 수 있도록 오픈소스로 공개하기로 했다.
이전 같으면 사내에서 개발된 소프트웨어를 오픈소스로 공개하는 것은 엄두도 내지 못했겠지만, 회사도 시대 흐름에 변화에 따라 분위기가 많이 바뀌었다. 그리고 오픈소스로 GitHub을 통해 공개하였다.
github.com/RedCA-Family/code-analyst
오픈소스로 공개하면서 여러 사항들을 추가로 검토하였는데, 주로 특허 침해 소지나 오픈소스SW 라이선스 검증이라 크게 공개에 따라 어려움은 없었던 것 같다. 물론 모든 소스코드 상에 저작권 및 라이선스를 표기해야 하는 등의 귀찮은 것들은 점들은 있었지만, 재미 있고, 가치 있는 일을 한다고 생각했던 것 같다.
2018년 10월 공개 이후에도 대상 언어를 추가하거나 코딩 스타일 점검 등의 기능을 조금씩 추가하고 있다. 현재는 Java뿐만 아니라 JavaScript, C#, Python 4개의 언어에 대하여 잠재적 결함 분석 등의 기능을 제공한다.
아울러, 공개된 소스 부분에 대해서 특징적인 부분들과 오픈소스로 공개하면서 Maven Central Repository를 통해 라이브러리를 공개하는 방법 등을 정리해 볼 예정이다.
Written with ♥ by Vincent Han
'SW 개발 이야기' 카테고리의 다른 글
Functional interfaces in Java (standard functional interfaces) (0) | 2020.12.08 |
---|---|
CSV 파일 기반 List 활용 (Code Analyst 코드 이야기 #3) (0) | 2020.11.05 |
System.exit() 무효화 하기 (Code Analyst 코드 이야기 #2) (0) | 2020.11.03 |
Log4j 실시간 로그 레벨 변경하기 (Code Analyst 코드 이야기 #1) (0) | 2020.11.02 |