주석 처리된 자바스크립트 파일의 비율을 가져옵니다.

주석 처리된 자바스크립트 파일의 비율을 가져옵니다.

파일에 자바스크립트 스타일 주석이 50% 이상 주석 처리되어 있는지 확인하고 싶습니다 //. 내 생각은 파일의 줄 수를 계산한 다음 줄 수를 계산 //하고 간단한 계산을 수행하는 것입니다.

누군가가 여러 줄 주석을 사용하면 까다롭습니다./* ... */

이 문제를 해결하는 더 좋은 방법이 있습니까?

답변1

이 쉘 스크립트가 귀하에게 적합한지 확인하십시오.

#!/bin/bash

if [ $# -eq 0 ]; then
    echo "You have to specify a file. Exiting..."
    exit 1
fi 

if [ ! -r $1 ]; then
    echo "File '$1' doesn't exist or is not readable. Exiting..."
    exit
fi

# count every line
lines=$(wc -l $1 | awk '{print $1}')
echo "$lines total lines."

# count '//' comments
commentType1=$(sed -ne '/^[[:space:]]*\/\//p' $1 | wc -l | awk '{print $1}')
echo "$commentType1 lines contain '//' comments."

# count single line block comments
commentType2=$(sed -ne '/^[[:space:]]*\/\*.*\*\/[[:space:]]*/p' $1 | wc -l)
echo "$commentType2 single line block comments"

# write code into temporary file because we need to tamper with the code
tmpFile=/tmp/$(date +%s%N)
cp $1 $tmpFile

# remove single line block comments
sed -ie '/^[[:space:]]*\/\*.*\*\/[[:space:]]*/d' $tmpFile

# count multiline block comments
commentType3=$(sed -ne ':start /^[[:space:]]*\/\*/!{n;bstart};p; :a n;/\*\//!{p;ba}; p' $tmpFile | wc -l | awk '{print $1}')
echo "$commentType3 of lines belong to block comments."

percent=$(echo "scale=2;($commentType1 + $commentType2 + $commentType3) / $lines * 100" | bc -l)
echo "$percent% of lines are comments"

관련 정보