<?xml version="1.0"?> 

<!--
	description:

		"Using gelint"

	tool: "Gobo Eiffel Lint"
	copyright: "Copyright (c) 2006-2025, Eric Bezault and others"
	license: "MIT License"
-->

<chapter xmlns="https://www.gobosoft.com/eiffel/gobo/documentation" id="gelint/usage">
<chapterinfo>
	<copyright>
		<year>2006-2025</year>
		<holder>Eric Bezault</holder>
	</copyright>
	<author>
		<firstname>Eric</firstname><surname>Bezault</surname>
	</author>
	<email>ericb@gobosoft.com</email>
	<date>25 September 2025</date>
</chapterinfo>

<title>Using gelint</title>

<section><title>Command-line options</title>
<para>
The usual way to invoke <projectname>gelint</projectname> is as follows:
<blockquote>
	<filename>gelint ecf_filename</filename>
</blockquote>
This will read the description of your Eiffel system in the ECF file
<filename>ecf_filename</filename>, perform code analysis on the
corresponding Eiffel classes and report any syntax or validity
errors. Your Eiffel system can be an Eiffel project or an 
Eiffel library.
</para>
<para>
For simple programs, one can just provide the Eiffel file containing
the root class: 
<blockquote>
	<filename>gec eiffel_filename</filename>
</blockquote>
This will perform the code analysis on all classes reachable from
that class, starting from its first creation procedure as root
creation procedure.
</para>
<para>
Here is the list of options that can be used with 
<projectname>gelint</projectname>:
<variablelist>
	<varlistentry>
		<term>
			<filename>-h</filename>
		</term>
		<term>
			<filename>--help</filename>
		</term>
		<listitem><para>
			Print a summary of the command-line options of <projectname>gelint</projectname> and exit.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--target=&lt;target_name&gt;</filename>
		</term>
		<listitem><para>
			Name of target to be used in ECF file.
			(default: last target in ECF file)
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--flat</filename>
		</term>
		<listitem><para>
			For each class, not only check the validity of the features
			declared in this class, but also of those inherited from 
			its parent classes.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--noflatdbc</filename>
		</term>
		<listitem><para>
			Do not check the validity of inherited pre- and postconditions
			when a feature is redeclared.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--catcall</filename>
		</term>
		<listitem><para>
			Report possible CAT-call errors, based on the statically computed
			dynamic type sets of each variables in the Eiffel code.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--ecma</filename>
		</term>
		<listitem><para>
			Strictly follow the ECMA Eiffel standard during code analysis.
		</para></listitem>
	</varlistentry>	
	<varlistentry>
		<term>
			<filename>--ise[=major[.minor[.revision[.build]]]]</filename>
		</term>
		<listitem><para>
			Version of ISE Eiffel whose semantics should be used during code analysis.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--setting=name=value</filename>
		</term>
		<listitem><para>
			Override settings defined in ECF file. This option can be used several
			times to override several settings.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--capability=name=value</filename>
		</term>
		<listitem><para>
			Override capability usage defined in ECF file. This option can be used several
			times to override several capabilities.
		</para></listitem>
	</varlistentry>	
	<varlistentry>
		<term>
			<filename>--variable=NAME=VALUE</filename>
		</term>
		<listitem><para>
			Override variables defined in ECF file. This option can be used several
			times to override several variables.
		</para></listitem>
	</varlistentry>	
	<varlistentry>
		<term>
			<filename>--thread=&lt;thread_count&gt;</filename>
		</term>
		<listitem><para>
			Number of threads to be used to run <projectname>gelint</projectname>.
			Negative numbers -N mean &quot;number of CPUs - N&quot;.
			(default: -3, aka &quot;max (number of CPUs -3, 1)&quot;)
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--silent</filename>
		</term>
		<listitem><para>
			Run <projectname>gelint</projectname> in silent mode.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--verbose</filename>
		</term>
		<listitem><para>
			Run <projectname>gelint</projectname> in verbose mode.
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--no-benchmark</filename>
		</term>
		<listitem><para>
			Should no benchmark information be displayed?
			(default: display non-nested benchmark information)
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--nested-benchmark</filename>
		</term>
		<listitem><para>
			Should nested benchmark information be displayed?
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>--metrics</filename>
		</term>
		<listitem><para>
			Should metrics information be displayed?
		</para></listitem>
	</varlistentry>
	<varlistentry>
		<term>
			<filename>-V</filename>
		</term>
		<term>
			<filename>--version</filename>
		</term>
		<listitem><para>
			Print the version number of <projectname>gelint</projectname> and exit.
		</para></listitem>
	</varlistentry>
</variablelist>
</para>
</section>

</chapter>
