Windows에 사이클로매틱 복잡도의 계측 툴 「lizard」 넣어 보았다

7095 단어 lizard파이썬pipCCN

목적



업무로 쉽게 품질 등을 확인하고 싶습니다.

환경



OS:Windows10
파이썬
pip
lizard
jinja2

환경 작성에 있어서 그럴듯한 포인트


Could not install packages due to an EnvironmentError: [WinError 5] アクセスが拒否されました 。: 'c:\\program files\\python37\\lib\\site-packages\\pip-19.0.3.dist-info\\entry_points.txt'
Consider using the `--user` option or check the permissions.

You are using pip version 19.0.3, however version 19.2.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

이러한 오류가 발생하면 명령 프롬프트를 관리자 권한으로 시작하십시오. 그렇게 하면 다음과 같이 성공합니다. 관리자 권한 사용할 수 없는 환경에 대해서는 --user 옵션을 붙여 설치한다.
C:\WINDOWS\system32>python -m pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/62/ca/94d32a6516ed197a491d17d46595ce58a83cbb2fca280414e57cd86b84dc/pip-19.2.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
Successfully installed pip-19.2.1

lizard 설치


C:\WINDOWS\system32>pip install lizard
Collecting lizard
  Using cached https://files.pythonhosted.org/packages/7e/01/650cfb0e613217003fe29d7edba549b71731122a5dc6e61fc41ad6f58fb8/lizard-1.16.3-py2.py3-none-any.whl
Installing collected packages: lizard
Successfully installed lizard-1.16.3

조작방법



표준 출력
이번에는 Java 소스의 CCN을 측정해 보겠습니다.

-l 옵션의 값은 언어에 따라 변경하십시오.

프로젝트의 루트 폴더로 이동하여 lizard 실행


C:\spring-boot-rest-api-sample-master\web-demo-2\spring\demo-2>
lizard -l java
================================================
  NLOC    CCN   token  PARAM  length  location
------------------------------------------------
      43      8    307      1      48 MavenWrapperDownloader::main@55-102@.\.mvn\wrapper\MavenWrapperDownloader.java
       9      1     75      2       9 MavenWrapperDownloader::downloadFileFromURL@104-112@.\.mvn\wrapper\MavenWrapperDownloader.java
       5      1     37      2       5 IndexController::hello@18-22@.\src\main\java\com\web\demo\controller\IndexController.java
       5      1     37      2       5 IndexController::formHoge@25-29@.\src\main\java\com\web\demo\controller\IndexController.java
       5      1     37      2       5 IndexController::root@32-36@.\src\main\java\com\web\demo\controller\IndexController.java
       3      1     20      1       3 WebDemo2Application::main@11-13@.\src\main\java\com\web\demo\WebDemo2Application.java
       2      1      5      0       2 WebDemo2ApplicationTests::contextLoads@13-14@.\src\test\java\com\web\demo\WebDemo2ApplicationTests.java
4 file analyzed.
==============================================================
NLOC    Avg.NLOC  AvgCCN  Avg.token  function_cnt    file
--------------------------------------------------------------
     69      26.0     4.5      191.0         2     .\.mvn\wrapper\MavenWrapperDownloader.java
     28       5.0     1.0       37.0         3     .\src\main\java\com\web\demo\controller\IndexController.java
     10       3.0     1.0       20.0         1     .\src\main\java\com\web\demo\WebDemo2Application.java
     12       2.0     1.0        5.0         1     .\src\test\java\com\web\demo\WebDemo2ApplicationTests.java

=============================================================================================
No thresholds exceeded (cyclomatic_complexity > 15 or length > 1000 or parameter_count > 100)
==========================================================================================
Total nloc   Avg.NLOC  AvgCCN  Avg.token   Fun Cnt  Warning cnt   Fun Rt   nloc Rt
------------------------------------------------------------------------------------------
       119      10.3     2.0       74.0        7            0      0.00    0.00

메소드 별 CCN → 파일 별 CCN 평균 → 모든 파일의 CCN 평균 순으로 출력됩니다.

"메소드별 CCN"에 대해 각 열의 의미는 다음과 같습니다.




약어
설명


NLOC      
Number Line Of Code
코드 행 수 (댓글 제외)

CCN
Cyclomatic Complexity Number
사이클로매틱 복잡도

token
-
?

PARAM
PARAMeter
메소드의 인수의 수

길이
-
NLOC에서 빈 줄을 제외한 행 수

location
-
{메소드 이름}@{시작행}-{종료행}@{파일 경로}


CSV 출력


lizard -l java --csv > resule_lizard.csv



HTML 출력


pip install jinja2
Collecting jinja2
  Downloading https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl (124kB)
     |████████████████████████████████| 133kB 242kB/s
Collecting MarkupSafe>=0.23 (from jinja2)
  Downloading https://files.pythonhosted.org/packages/65/c6/2399700d236d1dd681af8aebff1725558cddfd6e43d7a5184a675f4711f5/MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl
Installing collected packages: MarkupSafe, jinja2
Successfully installed MarkupSafe-1.1.1 jinja2-2.10.1

HTML 형식으로 출력하는 경우 jinja2라는 도구가 필요하기 때문에 pip로 설치
lizard -l java --html > resule_lizard.html



요약



이번에는 Java 파일만의 검증이었습니다만, JS 파일의 검증등도 할 수 있었으므로
여러 가지 시도해보십시오.



참고



htps : // 코 m / 보라 / ms / 아 1 아 96 아 2d7f5 081 2049
htps : // 코 m / 우호오이 / ms / c77 아 53 아 4c7 아 c232 아 1 바 1

htps : // 기주 b. 코 m / t r y y / ぃざ rd

좋은 웹페이지 즐겨찾기