2015-04-15 3 views
1

Я новичок в oclint, пытаясь получить версию 0.8, работающую на рабочем столе Ubuntu 14.04, работающую как виртуальная машина в Virtualbox. Я построил из источника, а не использовал двоичные файлы.oclint 0.8 на Ubuntu, чтобы заставить его работать

У меня есть 2 очень простых программы. Первая небольшая каст программа, которую я скомпилировать:

gcc sample.cpp -o sample 

Я бегу oclint как этот

oclint sample.cpp -- -c 

И я получаю текст доклада.

У меня есть другая Objective-C программы, которая выглядит, как этот

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) 
{ 
     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

     NSLog (@"hello world"); 
     [pool drain]; 
     return 0; 
} 

Составитель как так:

gcc -c hello.m `gnustep-config --objc-flags` -lobjc -lgnustep-base 

И это приводит к рабочему исполняемому файлу. Но когда я бегу от пуха, как это, я получаю проблему

oclint hello.m -- -c 

Compiler Errors: 
(please be aware that these errors will prevent OCLint from analyzing this source code) 

/usr/include/x86_64-linux-gnu/sys/param.h:23:10: 'stddef.h' file not found 


OCLint Report 

Summary: TotalFiles=0 FilesWithViolations=0 P1=0 P2=0 P3=0 


[OCLint (http://oclint.org) v0.8.1] 

Я установил ряд библиотек для разрешения отсутствующего файла stddef.h, inluding libc6 и libc6-DEV без успеха. Я начинаю думать, что это что-то в том, как работает oclint, но я слишком новичок, чтобы быстро разобраться. Я хочу, чтобы простые примеры работали, прежде чем переходить к более сложным.

+0

Я считаю, что проблема в том, что когда oclint компилирует, он не использует файлы include, используемые gcc или cc. Я вижу это в другом проекте, где я использовал медведя для создания файла compie_commands.json. Я получаю то же сообщение, когда я запускаю oclint, – mister270

ответ

1

Я отвечаю на свой вопрос. Есть несколько проблем с oclint, возможно, я не знал их достаточно хорошо.

Прежде всего, важно, чтобы параметры командной строки выполнялись при запуске oclint. Лучше всего использовать медведь при запуске сборки, чтобы захватить эти параметры в файле compile_commands.json и использовать oclint-json-compilation-database для запуска oclint для вас.

oclint-json-compilation-database - это скрипт python, который вам действительно нужно использовать перед использованием. Например:

#!/usr/bin/env python 

должно быть расположением питона в вашем окружении. Я изменил его

#!/usr/bin/python 

Этот питон скрипт читает compile_commands.json и форматирует вызов командной строки oclint для каждой программы, которая проходит фильтры. В моем случае сгенерированная командная строка была слишком длинной, и я получал сег. неисправность. Когда я сжал командную строку, я получил действительный прогон.

Все проблемы решены. Улучшение в документах oclint поможет.