function main( context ) {
	var comments;
	var visited;
	var source;

	source = context.getSourceCode();
	visited = {};

	/**
	* Reports the error message.
	*
	* @private
	* @param {Object} comment - comment node
	*/
	function report( comment ) {
		context.report({
			'node': null,
			'message': 'Empty comments are not allowed',
			'loc': comment.loc,
			'fix': fix
		});

		/**
		* Fixes the lint error.
		*
		* @private
		* @param {Function} fixer - ESLint fixer
		* @returns {(Object|null)} fix or null
		*/
		function fix( fixer ) {
			if ( comment.type === 'Block' || comment.type === 'Line' ) {
				return fixer.removeRange( comment.range );
			}
			return null;
		}
	}

	/**
	* Checks if the comment is empty.
	*
	* @private
	* @param {ASTNode} comment - comment node
	*/
	function processComment( comment ) {
		var text = comment.value.trim();
		if ( text === '' ) {
			report( comment );
		}
	}

	/**
	* Checks for empty code comments.
	*
	* @private
	* @param {ASTNode} node - program to examine
	*/
	function validate( node ) {
		var comment;
		var i;

		comments = source.getCommentsInside( node );
		for ( i = 0; i < comments.length; i++ ) {
			comment = comments[i];
			if ( comment.type !== 'Shebang' && !visited[comment.range] ) {
				processComment( comment );
			}
			visited[comment.range] = true;
		}
	}

	return {
		'Program:exit': validate,
		'FunctionDeclaration': validate,
		'FunctionExpression': validate
	};
}
Rule for validating that comments are not empty.

@param {Object} context - ESLint context
@returns {Object} validators