blob: 3403d2d359cf79e85b428777668c797ec7f52952 [file] [log] [blame]
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# @author: Alexei Fedotov
convert_html_to_list() {
find "$directory" \
-name 'globals.html' \
-o -name 'globals_*' \
-o -name 'hierarchy.html' \
-o -name 'files.html' \
-o -name 'namespaces.html' \
-o -name 'namespacemembers*' \
-o -name 'functions.html' \
-o -name 'functions_*' \
-o -name '*.html' \
-exec echo perl `dirname $0`/html_to_list.pl {} \>{}.txt \; \
>doc_quality/html_to_list.sh
source doc_quality/html_to_list.sh
}
clean_files() {
rm -rf doc_quality
find "$directory" -name '*.html.txt' -exec rm {} \;
}
merge_dictionary() {
find "$directory" -name '*.html.txt' -exec cat {} \; |
perl -n -e '/^[A-Za-z][a-z]{2,}$/ && print' | sort |
uniq -c | sort -nr | awk '{print $2}' >doc_quality/dictionary.txt
}
create_aspell_dictionary() {
words=`cat doc_quality/dictionary.txt | wc -l`
half=`expr $words / 2`
tail -n $half doc_quality/dictionary.txt >doc_quality/half.txt
(
aspell list <doc_quality/half.txt
cat doc_quality/half.txt
) | sort | uniq -u >doc_quality/aspell.txt
cat <<EOF >doc_quality/estimate_doc_file.pl
my (\$num, \$sum) = ($scale, 0);
while (<>) {
\$num++;
EOF
perl -n -e 'chomp; print " if (/^$_\$/) { \$sum++; next }\n"' \
>>doc_quality/estimate_doc_file.pl <doc_quality/aspell.txt
cat <<EOF >>doc_quality/estimate_doc_file.pl
}
print int($scale * \$sum / \$num) . " \$ARGV\\n";
EOF
}
estimate_doc_quality() {
find "$directory" -name '*.html.txt' | while read file
do
perl doc_quality/estimate_doc_file.pl "$file"
done >doc_quality/unsorted_result.txt
sort -nr <doc_quality/unsorted_result.txt >doc_quality/result.txt
}
directory=${1:-.}
scale=128
clean_files
mkdir doc_quality
convert_html_to_list
merge_dictionary
create_aspell_dictionary
estimate_doc_quality