'프로그램 사용/clang'에 해당되는 글 5건

  1. 2023.04.17 semgrep
  2. 2023.04.17 cppcheck 사용
  3. 2015.08.03 clang 으로 컴파일
  4. 2015.08.03 clang on ubnutu
  5. 2015.02.21 llvm / clang / cppcheck
프로그램 사용/clang2023. 4. 17. 12:09

c 외에 go 등을 정적분석해주는 툴을 찾아보는데 걸려 나온(?) 툴

python 패키지로 깔려서 apt로 지원하진 않는다.

$ pip3 install semgrep

[링크 : https://freernd.tistory.com/entry/Semgrep-CLI-설치-실행-방법]

 

Initial release February 6, 2020; 3 years ago[1]
Stable release 1.16.0 Edit this on Wikidata / March 31, 2023; 17 days ago [2]
Repository github.com/returntocorp/semgrep Edit this at Wikidata
Written in OCaml (core) and Python (CLI)

[링크 : https://en.wikipedia.org/wiki/Semgrep#Services]

[링크 : https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis]

'프로그램 사용 > clang' 카테고리의 다른 글

cppcheck 사용  (0) 2023.04.17
clang 으로 컴파일  (0) 2015.08.03
clang on ubnutu  (0) 2015.08.03
llvm / clang / cppcheck  (0) 2015.02.21
Posted by 구차니
프로그램 사용/clang2023. 4. 17. 11:11

그냥 옵션주면 밋밋(?)한데

--enable=all 주면 조금 더 나오긴 한다.

 

$ cppcheck
Cppcheck - A tool for static C/C++ code analysis

Syntax:
    cppcheck [OPTIONS] [files or paths]

If a directory is given instead of a filename, *.cpp, *.cxx, *.cc, *.c++, *.c,
*.tpp, and *.txx files are checked recursively from the given directory.

Options:
/// 생략 ///

Example usage:
  # Recursively check the current folder. Print the progress on the screen and
  # write errors to a file:
  cppcheck . 2> err.txt

  # Recursively check ../myproject/ and don't print progress:
  cppcheck --quiet ../myproject/

  # Check test.cpp, enable all checks:
  cppcheck --enable=all --inconclusive --std=posix test.cpp

  # Check f.cpp and search include files from inc1/ and inc2/:
  cppcheck -I inc1/ -I inc2/ f.cpp

For more information:
    http://cppcheck.net/manual.pdf

[링크 : https://int-i.github.io/cpp/2023-01-07/cppcheck/]

 

여전히 좀 밋밋(?)한데 규칙을 지정해서 하는법 없나?

(information) Cppcheck cannot find all the include files (use --check-config for details)

 

misra 룰을 빼낼 법을 찾아야...

[링크 : https://ppiazi.tistory.com/entry/MISRA-C2012-를-위한-CppCheck-사용]

'프로그램 사용 > clang' 카테고리의 다른 글

semgrep  (0) 2023.04.17
clang 으로 컴파일  (0) 2015.08.03
clang on ubnutu  (0) 2015.08.03
llvm / clang / cppcheck  (0) 2015.02.21
Posted by 구차니
프로그램 사용/clang2015. 8. 3. 16:57

test.c:3:1: error: 'main' must return 'int'

clang은 int main() 아니면 배쨰는 중 -_-


음.. 코드가 허접한거라..

$ cat test.c

#include <stdio.h>


int main()

{

        int *p;


        free(p);

        return 0;

} 


시간은 큰 의미가 없지만.. 아무튼 빌드가 아니라 --analyze만 해서는

빠르게 작동하는 걸 보니 꽤 쓸만해 보이기도?


$ time gcc -o gcc.o test.c

test.c: In function ‘main’:

test.c:7:2: warning: incompatible implicit declaration of built-in function ‘free’ [enabled by default]


real    0m0.611s

user    0m0.510s

sys     0m0.070s


$ time clang -o gcc.o test.c

test.c:7:2: warning: implicit declaration of function 'free' is invalid in C99

      [-Wimplicit-function-declaration]

        free(p);

        ^

1 warning generated.


real    0m0.728s

user    0m0.560s

sys     0m0.110s



$ time clang -o gcc.o test.c --analyze

test.c:7:2: warning: Function call argument is an uninitialized value

        free(p);

        ^    ~

1 warning generated.


real    0m0.325s

user    0m0.220s

sys     0m0.080s



$ time gcc -o gcc.o test.c -fsyntax-only
test.c: In function ‘main’:
test.c:7:2: warning: incompatible implicit declaration of built-in function ‘free’ [enabled by default]

real    0m0.185s
user    0m0.140s
sys     0m0.030s

어?


'프로그램 사용 > clang' 카테고리의 다른 글

semgrep  (0) 2023.04.17
cppcheck 사용  (0) 2023.04.17
clang on ubnutu  (0) 2015.08.03
llvm / clang / cppcheck  (0) 2015.02.21
Posted by 구차니
프로그램 사용/clang2015. 8. 3. 16:05

clang이 요즘 뜨는건지.. 한번 해보려는데.. 흐음...

일단 귀차니즘으로.. (-_-) 라즈베리 파이에 ㅋㅋ


$ sudo apt-get install clang

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

다음 패키지를 더 설치할 것입니다:

  libclang-common-dev libffi-dev libllvm3.0 llvm-3.0 llvm-3.0-dev llvm-3.0-runtime

제안하는 패키지:

  llvm-3.0-doc

다음 새 패키지를 설치할 것입니다:

  clang libclang-common-dev libffi-dev libllvm3.0 llvm-3.0 llvm-3.0-dev llvm-3.0-runtime

0개 업그레이드, 7개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.

24.2 M바이트 아카이브를 받아야 합니다.

이 작업 후 71.3 M바이트의 디스크 공간을 더 사용하게 됩니다.

계속 하시겠습니까 [Y/n]?

받기:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libllvm3.0 armhf 3.0-10 [6,778 kB]

받기:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libclang-common-dev armhf 1:3.0-6.2 [76.7 kB]

받기:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main clang armhf 1:3.0-6.2 [4,510 kB]

받기:4 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libffi-dev armhf 3.0.10-3+b3 [113 kB]

받기:5 http://mirrordirector.raspbian.org/raspbian/ wheezy/main llvm-3.0-runtime armhf 3.0-10 [40.7 kB]

받기:6 http://mirrordirector.raspbian.org/raspbian/ wheezy/main llvm-3.0 armhf 3.0-10 [1,215 kB]

받기:7 http://mirrordirector.raspbian.org/raspbian/ wheezy/main llvm-3.0-dev armhf 3.0-10 [11.5 MB]

내려받기 24.2 M바이트, 소요시간 17초 (1,386 k바이트/초)

Selecting previously unselected package libllvm3.0:armhf.

(데이터베이스 읽는중 ...현재 120356개의 파일과 디렉터리가 설치되어 있습니다.)

libllvm3.0:armhf 패키지를 푸는 중입니다 (.../libllvm3.0_3.0-10_armhf.deb에서) ...

Selecting previously unselected package libclang-common-dev.

libclang-common-dev 패키지를 푸는 중입니다 (.../libclang-common-dev_1%3a3.0-6.2_armhf.deb에서) ...

Selecting previously unselected package clang.

clang 패키지를 푸는 중입니다 (.../clang_1%3a3.0-6.2_armhf.deb에서) ...

Selecting previously unselected package libffi-dev:armhf.

libffi-dev:armhf 패키지를 푸는 중입니다 (.../libffi-dev_3.0.10-3+b3_armhf.deb에서) ...

Selecting previously unselected package llvm-3.0-runtime.

llvm-3.0-runtime 패키지를 푸는 중입니다 (.../llvm-3.0-runtime_3.0-10_armhf.deb에서) ...

Selecting previously unselected package llvm-3.0.

llvm-3.0 패키지를 푸는 중입니다 (.../llvm-3.0_3.0-10_armhf.deb에서) ...

Selecting previously unselected package llvm-3.0-dev.

llvm-3.0-dev 패키지를 푸는 중입니다 (.../llvm-3.0-dev_3.0-10_armhf.deb에서) ...

man-db에 대한 트리거를 처리하는 중입니다 ...

install-info에 대한 트리거를 처리하는 중입니다 ...

libllvm3.0:armhf (3.0-10) 설정하는 중입니다 ...

libclang-common-dev (1:3.0-6.2) 설정하는 중입니다 ...

clang (1:3.0-6.2) 설정하는 중입니다 ...

libffi-dev:armhf (3.0.10-3+b3) 설정하는 중입니다 ...

llvm-3.0-runtime (3.0-10) 설정하는 중입니다 ...

llvm-3.0 (3.0-10) 설정하는 중입니다 ...

llvm-3.0-dev (3.0-10) 설정하는 중입니다 ...


$ ls  -al /usr/bin/clang*
-rwxr-xr-x 1 root root 10524368 10월 18  2013 /usr/bin/clang
lrwxrwxrwx 1 root root        5 10월 18  2013 /usr/bin/clang++ -> clang

$ ls -al /usr/bin/scan-*
lrwxrwxrwx 1 root root 36 10월 18  2013 /usr/bin/scan-build -> ../share/clang/scan-build/scan-build
lrwxrwxrwx 1 root root 34 10월 18  2013 /usr/bin/scan-view -> ../share/clang/scan-view/scan-view


빌드 시간이나 바이너리 사이즈나.. clang이 우세한 듯...

$ time clang++ a.cpp

real    0m2.595s
user    0m2.350s
sys     0m0.210s

$ time g++ a.cpp

real    0m3.307s
user    0m2.490s
sys     0m0.230s

$ ls -al *.out
-rwxr-xr-x 1 pi pi 6033  8월  3 07:37 clang++.out
-rwxr-xr-x 1 pi pi 6492  8월  3 07:38 g++.out

$ strip *.out
$ ls -al *.out
-rwxr-xr-x 1 pi pi 3396  8월  3 07:39 clang++.out
-rwxr-xr-x 1 pi pi 3616  8월  3 07:39 g++.out



정적분석을 지원한다는데 잘 모르겠다.. 어떻게 쓰는지는 ㅠㅠ
clang static analyzer


$ scan-build clang++ a.cpp

scan-build: 'clang' executable not found in '/usr/share/clang/scan-build/bin'.

scan-build: Using 'clang' from path: /usr/bin/clang

scan-build: Removing directory '/tmp/scan-build-2015-08-03-1' because it contains no reports.


$ scan-build g++ a.cpp
scan-build: 'clang' executable not found in '/usr/share/clang/scan-build/bin'.
scan-build: Using 'clang' from path: /usr/bin/clang
scan-build: Removing directory '/tmp/scan-build-2015-08-03-1' because it contains no reports.

[링크 : http://web.cs.ucla.edu/~tianyi.zhang/tutorial.html]


$ clang --analyze a.cpp

[링크 : http://kthan.tistory.com/158]

'프로그램 사용 > clang' 카테고리의 다른 글

semgrep  (0) 2023.04.17
cppcheck 사용  (0) 2023.04.17
clang 으로 컴파일  (0) 2015.08.03
llvm / clang / cppcheck  (0) 2015.02.21
Posted by 구차니
프로그램 사용/clang2015. 2. 21. 10:22

오픈소스 정적분석 툴

llvm이 본체(?)고 clang은 llvm을 위한 front-end

그리고 cppcheck는 eclipse와 통합!


어느게 나으려나?



[링크 : http://llvm.org]

[링크 : http://clang.llvm.orgfrontenf for llvm

[링크 : http://ko.wikipedia.org/wiki/LLVMlow level virtual machine

[링크 : http://en.wikipedia.org/wiki/LLVM]


[링크 : http://cppcheck.sourceforge.net]

'프로그램 사용 > clang' 카테고리의 다른 글

semgrep  (0) 2023.04.17
cppcheck 사용  (0) 2023.04.17
clang 으로 컴파일  (0) 2015.08.03
clang on ubnutu  (0) 2015.08.03
Posted by 구차니