[ios] 보안 공 방 코드 가 혼 란 스 러 운 작은 도구
4698 단어 iOS
http://blog.csdn.net/yiyaaixuexi/article/details/29201699
아주 좋 은 것 같 지만, 안에 func. list 파일 이 언급 되 어 있 습 니 다.
규칙:
함수 이름 목록 func. list 를 만 들 고 헷 갈 릴 함수 이름 을 기록 합 니 다. 예 를 들 어: - (void) sample; -(void)seg1:(NSString *)string seg2:(NSUInteger)num;sampleseg1seg 2
그래서 저 는 c 언어 로 다음 코드 를 썼 습 니 다. func. list 파일 을 만 드 는 데 사 용 됩 니 다.
코드 의 기능 은 프로젝트 를 옮 겨 다 니 며 안에 있 는. h 와. m 파일 을 찾 는 것 입 니 다.또한 안의 유형 명, 방법 명, 매개 변수 명 등 을 위의 규칙 에 따라 나열 한다.
주: 보통. m 와. h 가 짝 짓 기 때 문 입 니 다. 예 를 들 어 test. m 에 test. h 가 있 지만 가끔 config. h 만 있 고 대응 하 는. m 파일 이 없습니다.그래서 안에 m 파일 이 있 으 면 h 파일 을 처리 하지 않 고 유사 한 방법 명 을 반복 할 까 봐 걱정 하 는 작은 논리 가 있 습 니 다.
#include
#include
#include
#include
#include
#include
// ,
//gcc file.c -o file
//
//./file
// , 。
//
//1. 。
//2. , 2 。
#if 0//
#define Printf_info(x,y) printf(x,y);
#else
#define Printf_info(x,y)
#endif
int Mydir(const char *filepath);
int checkFile(const char *filepath);
int findNum = 0;
int main(int argc, char *argv[])
{
// ios 。h 。m , , , ,
// CSDN “ ” 。
Mydir("/myProject");// 。
return 0;
}
void Print_fileName(const char * filename)
{
int a = strlen(filename);
for(int i=0;id_name,".")==0||strcmp(drt->d_name,"..")==0||strcmp(drt->d_name,".DS_Store")==0)
continue;
fullpath=strdup(filepath);
fullpath=strcat(fullpath,"/");
fullpath=strcat(fullpath,drt->d_name);
Printf_info("%s",fullpath);
if(stat(fullpath,&statbuf)<0)
continue;
if (S_ISREG(statbuf.st_mode))
{
filetype="reguler";
int a = strlen(drt->d_name);
char *pp = drt->d_name;
//printf("---- %c %c" , pp[a - 2], pp[a - 1]);
if(pp[a - 2] == '.' && pp[a - 1] == 'm')
{
Print_fileName(drt->d_name);
checkFile(fullpath);
}
#if 0
else if(pp[a - 2] == '.' && pp[a - 1] == 'h')
{
char *mPath = strdup(fullpath);
//printf("mpath: %s",mPath);
char *ppp = mPath;//drt->d_name;
int a = strlen(ppp);
ppp [a - 1] = 'm'; / m 파일 이 존재 하 는 지 확인 합 니 다.
//printf("mpath: %s",mPath);
if((access(mPath,F_OK))==0){
continue;
}
Print_fileName(drt->d_name);
checkFile(fullpath);
}
#endif
}
else if(S_ISDIR(statbuf.st_mode))
{
filetype="directory";
//fullpath=strcat(fullpath,"/");
//printf("%s,%s",fullpath,filetype);
tmp=strdup(fullpath);
Mydir(tmp);
}
else
{
filetype="invalid";
printf("%s,%s",fullpath,filetype);
}
//printf("%s,%s",fullpath,filetype);
bzero(fullpath,strlen(fullpath));
}
return 0;
}
int print_Method(char *text)
{
char *p = text;
char c;
int start = 0;
while((c = *p++) !=''){//Method
if(c == ':' || c == '{' || c == ';'){
start = 0;
break;
}
if(start == 1){
printf("%c", c);
}
if(c == ')')
start = 1;
}
printf("");
#if 0
start = 0;
while((c = *p++) !=''){//arge
if(c == ':'){
start = 0;
printf("");
}
if(start == 2 && c != '{'){
printf("%c", c);
}
if(c == ' ' && start == 1)
start = 2;
if(c == ')')
start = 1;
}
//printf("");
#endif
return 0;
}
int findMethod(char *text)
{
char *p = text;
char c;
while((c = *p++) !=''){
if(c == '-' && ((*p == ' ' && *(p + 1) == '(') || *p == '(' )){
if( text[0] == '-' )
{
//printf("%d %s", findNum++, text);
print_Method(text);
}
//else
// printf("%d %s", findNum++, text);
}
if(c == '+' && ((*p == ' ' && *(p + 1) == '(') || *p == '(' )){
if( text[0] == '+' )
{
//printf("%d %s", findNum++, text);
print_Method(text);
}
//else
// printf("%d %s", findNum++, text);
}
}
return 0;
}
int checkFile(const char *filepath)
{
//printf("====%s", filepath);
FILE * fp1; / 파일 스 트림 포인터 정의, 읽 기 파일 열기
char text [40961]; / 읽 는 문 자 를 저장 할 문자열 배열 을 정의 합 니 다.
fp1 = fopen (filepath, "r"); / / 읽 기 전용 으로 파일 a. txt 열기
while (fgets (text, 40960, fp1)! = NULL) / / fp1 이 가리 키 는 파일 의 내용 을 텍스트 로 한 줄 씩 읽 습 니 다.
{
/ / puts (text); / / 화면 에 출력
findMethod(text);
}
fclose (fp1); / / 파일 a. txt 를 닫 습 니 다. 열 려 있 으 면 닫 아야 합 니 다.
return 0;
}
코드 는 c 언어 로 이 루어 진 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.