function main( context ) {
	var comment;
	var source;

	source = context.getSourceCode();

	/**
	* Validates that a JSDoc comment does not start with space-aligned asterisks.
	*
	* @private
	* @param {ASTNode} node - program to examine
	*/
	function validate( node ) {
		var hasLeadingSpace;
		var lines;
		var i;

		comment = source.getJSDocComment( node );
		if ( comment ) {
			lines = comment.value.split( reEOL.REGEXP );
			for ( i = 0; i < lines.length; i++ ) {
				if ( lines[ i ].charAt( 0 ) === ' ' ) {
					hasLeadingSpace	= true;
					break;
				}
			}
			if ( hasLeadingSpace ) {
				report( comment.value, comment.loc, comment.range );
			}
		}

		/**
		* Reports the error message.
		*
		* @private
		* @param {string} comment - comment text
		* @param {Object} loc - location of comment node
		* @param {Array} range - comment range
		*/
		function report( comment, loc, range ) {
			context.report({
				'node': null,
				'message': 'JSDoc comment should not have space-aligned asterisks',
				'loc': loc,
				'fix': fix
			});

			/**
			* Fixes the lint error by removing leading spaces before asterisks.
			*
			* @private
			* @param {Function} fixer - ESLint fixer
			* @returns {(Object|null)} fix or null
			*/
			function fix( fixer ) {
				var fixed = replace( comment, RE_LEADING_SPACE, '*' );
				fixed = '/*' + fixed + '*/';
				return fixer.replaceTextRange( range, fixed );
			}
		}
	}

	return {
		'Program:exit': validate,
		'FunctionDeclaration': validate,
		'FunctionExpression': validate
	};
}
Rule for validating that JSDoc comments do not have space-aligned asterisks.

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