[cfe-dev] Finding redundant #includes

steve naroff snaroff at apple.com
Sat Dec 12 12:26:28 PST 2009


Good points. I think the diagnostics would need some interpretation  
(by a human).

If we wanted to get "fancy", we could devise some way to determine if  
a declaration occurred within a #ifdef clause (special casing the  
#ifndef that is commonly at the begin/end of every C header).  
Unfortunately, any feature involving the preprocessor is usually more  
complex than it should be (given the ability to arbitrary mutate  
headers in different contexts...including the same compilation unit:-(

Fortunately, ObjC headers and user-defined (i.e. non-system) headers  
usually aren't as gross...

snaroff

On Dec 12, 2009, at 2:56 PM, Ted Kremenek wrote:

> Doing it correctly wouldn't be too hard from the AST perspective,  
> but would be tricky when considering preprocessor logic.  Any macros  
> defined in a header and later used outside that header causes a  
> dependency.  Moreover, if a file can be compiled under different  
> contexts, e.g., on Mac OS X one can compile for i386, x86_64, etc.,  
> then the "liveness" of a #include can change between translations.
>
> On Dec 12, 2009, at 8:51 AM, steve naroff wrote:
>
>> Hi Andrew,
>>
>> I don't believe we currently have such a feature (though it's an
>> interesting idea).
>>
>> Implementing this wouldn't be too difficult, however it certainly
>> isn't a "quick hack".
>>
>> snaroff
>>
>> On Dec 12, 2009, at 11:13 AM, Andrew Price wrote:
>>
>>> Hi,
>>>
>>> Can clang's analysis features help me find #includes which are no
>>> longer
>>> required in a C source file? I'm working on cleaning up some old
>>> crufty
>>> code and it would be good to have this functionality.
>>>
>>> Andrew
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>




More information about the cfe-dev mailing list