1

私は、Virtualbox で VM として実行されている Ubuntu 14.04 デスクトップでバージョン 0.8 を動作させようとしている oclint の初心者です。バイナリを使用するのではなく、ソースからビルドしました。

私は2つの非常に単純なプログラムを持っています。1 つ目は、私がコンパイルした小さな cpp プログラムです。

gcc sample.cpp -o sample

私はこのようにoclintを実行します

oclint sample.cpp -- -c

そして、私はテキストレポートを受け取ります。

このような別の目的の 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 ファイルを解決するために、libc6 と libc6-dev を含む多くのライブラリをインストールしましたが、成功しませんでした。oclint の実行方法に問題があるのではないかと考え始めていますが、新人すぎてすぐに理解できません。より複雑なものに移る前に、単純な例を機能させたいと思います。

4

1 に答える 1

1

私は自分の質問に答えています。oclint にはいくつかの問題がありますが、おそらく私はそれらを十分に知りませんでした。

まず、oclint を実行するときにコマンド オプションを正しく設定することが重要です。最良のアドバイスは、ビルドを実行するときに bear を使用してこれらのオプションを compile_commands.json ファイルに取り込み、oclint-json-compilation-database を使用して oclint を実行することです。

oclint-json-compilation-database は、使用する前に確認する必要がある Python スクリプトです。例えば:

#!/usr/bin/env python

環境内のpythonの場所である必要があります。に変更しました

#!/usr/bin/python

この Python スクリプトは、compile_commands.json を読み取り、フィルターを通過するすべてのプログラムの oclint コマンド ライン呼び出しをフォーマットします。私の場合、生成されたコマンド ラインが長すぎて、セグを取得していました。障害。コマンドラインを縮小すると、有効な実行が得られました。

私の問題はすべて解決しました。oclint ドキュメントのもう少しの改善が役立ちます。

于 2015-04-17T17:29:06.343 に答える