162306a36Sopenharmony_ci#!/bin/bash 262306a36Sopenharmony_ci# (c) 2017, Jonathan Corbet <corbet@lwn.net> 362306a36Sopenharmony_ci# sayli karnik <karniksayli1995@gmail.com> 462306a36Sopenharmony_ci# 562306a36Sopenharmony_ci# This script detects files with kernel-doc comments for exported functions 662306a36Sopenharmony_ci# that are not included in documentation. 762306a36Sopenharmony_ci# 862306a36Sopenharmony_ci# usage: Run 'scripts/find-unused-docs.sh directory' from top level of kernel 962306a36Sopenharmony_ci# tree. 1062306a36Sopenharmony_ci# 1162306a36Sopenharmony_ci# example: $scripts/find-unused-docs.sh drivers/scsi 1262306a36Sopenharmony_ci# 1362306a36Sopenharmony_ci# Licensed under the terms of the GNU GPL License 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciif ! [ -d "Documentation" ]; then 1662306a36Sopenharmony_ci echo "Run from top level of kernel tree" 1762306a36Sopenharmony_ci exit 1 1862306a36Sopenharmony_cifi 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciif [ "$#" -ne 1 ]; then 2162306a36Sopenharmony_ci echo "Usage: scripts/find-unused-docs.sh directory" 2262306a36Sopenharmony_ci exit 1 2362306a36Sopenharmony_cifi 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciif ! [ -d "$1" ]; then 2662306a36Sopenharmony_ci echo "Directory $1 doesn't exist" 2762306a36Sopenharmony_ci exit 1 2862306a36Sopenharmony_cifi 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cicd "$( dirname "${BASH_SOURCE[0]}" )" 3162306a36Sopenharmony_cicd .. 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cicd Documentation/ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciecho "The following files contain kerneldoc comments for exported functions \ 3662306a36Sopenharmony_cithat are not used in the formatted documentation" 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci# FILES INCLUDED 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cifiles_included=($(grep -rHR ".. kernel-doc" --include \*.rst | cut -d " " -f 3)) 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cideclare -A FILES_INCLUDED 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cifor each in "${files_included[@]}"; do 4562306a36Sopenharmony_ci FILES_INCLUDED[$each]="$each" 4662306a36Sopenharmony_ci done 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cicd .. 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci# FILES NOT INCLUDED 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cifor file in `find $1 -name '*.c'`; do 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci if [[ ${FILES_INCLUDED[$file]+_} ]]; then 5562306a36Sopenharmony_ci continue; 5662306a36Sopenharmony_ci fi 5762306a36Sopenharmony_ci str=$(scripts/kernel-doc -export "$file" 2>/dev/null) 5862306a36Sopenharmony_ci if [[ -n "$str" ]]; then 5962306a36Sopenharmony_ci echo "$file" 6062306a36Sopenharmony_ci fi 6162306a36Sopenharmony_ci done 6262306a36Sopenharmony_ci 63