Skip to content

Commit 19b7a8d

Browse files
committed
Prepare cppcheck
1 parent fed1c66 commit 19b7a8d

File tree

4 files changed

+85
-26
lines changed

4 files changed

+85
-26
lines changed

app/src/main/java/com/duy/ccppcompiler/compiler/analyze/CppCheckAnalyzer.java

Lines changed: 72 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,95 @@
1818
package com.duy.ccppcompiler.compiler.analyze;
1919

2020
import android.content.Context;
21+
import android.core.widget.EditAreaView;
22+
import android.os.Handler;
2123
import android.support.annotation.NonNull;
24+
import android.text.Editable;
25+
import android.text.TextWatcher;
2226

27+
import com.duy.ccppcompiler.compiler.shell.CommandBuilder;
28+
import com.duy.ccppcompiler.compiler.shell.CommandResult;
29+
import com.duy.ccppcompiler.compiler.shell.Shell;
30+
import com.duy.common.DLog;
2331
import com.jecelyin.editor.v2.editor.EditorDelegate;
2432

33+
import org.apache.commons.io.IOUtils;
34+
2535
import java.io.File;
36+
import java.io.FileOutputStream;
37+
import java.io.IOException;
38+
import java.util.regex.Pattern;
2639

2740
/**
2841
* https://sourceforge.net/p/cppcheck/wiki/Home/
2942
*/
3043
public class CppCheckAnalyzer implements ICodeAnalyser {
31-
@NonNull
32-
private final Context context;
33-
@NonNull
34-
private final EditorDelegate delegate;
44+
public static final long DELAY_TIME = 300;
45+
private static final String TAG = "CppCheckAnalyzer";
46+
47+
private static final String CPPCHECK_PROGRAM = "cppcheck";
48+
private static final String TEMPLATE = "--template=\"{file}:{line}:{message}\"";
49+
private static final Pattern TEMPLATE_PATTERN = Pattern.compile("^(\\S+):([0-9]+):(.*)");
50+
51+
private final Context mContext;
52+
private final EditorDelegate mEditorDelegate;
53+
private final android.os.Handler mHandler = new Handler();
54+
private final Runnable mAnalyze = new Runnable() {
55+
@Override
56+
public void run() {
57+
try {
58+
analyzeImpl();
59+
} catch (IOException e) {
60+
e.printStackTrace();
61+
}
62+
}
63+
};
3564

3665
public CppCheckAnalyzer(@NonNull Context context, @NonNull EditorDelegate delegate) {
37-
this.context = context;
38-
this.delegate = delegate;
66+
this.mContext = context;
67+
this.mEditorDelegate = delegate;
68+
setEditor(delegate.getEditText());
69+
}
70+
71+
private void analyzeImpl() throws IOException {
72+
File file = new File(mContext.getCacheDir(), "cppcheck/tmp/" + mEditorDelegate.getDocument().getFile().getName());
73+
FileOutputStream output = new FileOutputStream(file);
74+
IOUtils.write(mEditorDelegate.getEditableText(), output);
75+
output.close();
76+
if (DLog.DEBUG) DLog.d(TAG, "analyzeImpl: write tmp file complete");
77+
78+
CommandBuilder builder = new CommandBuilder(CPPCHECK_PROGRAM);
79+
builder.addFlags(TEMPLATE);
80+
builder.addFlags(file.getAbsolutePath());
81+
82+
String cmd = builder.build();
83+
CommandResult result = Shell.exec(mContext, file.getParent(), cmd);
84+
if (DLog.DEBUG) DLog.d(TAG, "result = " + result);
3985
}
4086

4187
@Override
4288
public void analyze(File[] sources) {
4389

4490
}
4591

92+
public void setEditor(EditAreaView editor) {
93+
editor.addTextChangedListener(new TextWatcher() {
94+
95+
@Override
96+
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
97+
98+
}
99+
100+
@Override
101+
public void onTextChanged(CharSequence s, int start, int before, int count) {
102+
103+
}
104+
105+
@Override
106+
public void afterTextChanged(Editable s) {
107+
mHandler.removeCallbacks(mAnalyze);
108+
mHandler.postDelayed(mAnalyze, DELAY_TIME);
109+
}
110+
});
111+
}
46112
}

libeditor/src/main/java/com/duy/ide/core/SimpleEditorActivity.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import android.content.pm.ActivityInfo;
2424
import android.content.pm.PackageManager;
2525
import android.core.widget.EditAreaView;
26-
import android.graphics.Color;
2726
import android.graphics.drawable.Drawable;
2827
import android.net.Uri;
2928
import android.os.Build;
@@ -52,12 +51,13 @@
5251
import com.duy.common.StoreUtil;
5352
import com.duy.file.explorer.FileExplorerActivity;
5453
import com.duy.ide.diagnostic.DiagnosticPresenter;
55-
import com.duy.ide.file.dialogs.DialogNewFile;
54+
import com.duy.ide.diagnostic.view.DiagnosticFragment;
5655
import com.duy.ide.editor.editor.BuildConfig;
5756
import com.duy.ide.editor.editor.R;
5857
import com.duy.ide.file.FileManager;
5958
import com.duy.ide.file.SaveListener;
60-
import com.duy.ide.diagnostic.view.DiagnosticFragment;
59+
import com.duy.ide.file.dialogs.DialogNewFile;
60+
import com.duy.ide.settings.EditorSettingsActivity;
6161
import com.jecelyin.common.utils.DLog;
6262
import com.jecelyin.common.utils.IOUtils;
6363
import com.jecelyin.common.utils.SysUtils;
@@ -76,7 +76,6 @@
7676
import com.jecelyin.editor.v2.manager.MenuManager;
7777
import com.jecelyin.editor.v2.manager.RecentFilesManager;
7878
import com.jecelyin.editor.v2.manager.TabManager;
79-
import com.duy.ide.settings.EditorSettingsActivity;
8079
import com.jecelyin.editor.v2.utils.DBHelper;
8180
import com.jecelyin.editor.v2.widget.SymbolBarLayout;
8281
import com.jecelyin.editor.v2.widget.menu.MenuDef;
@@ -158,14 +157,15 @@ public void onClick(View v, String text) {
158157
bindPreferences();
159158
setScreenOrientation();
160159

161-
mDrawerLayout.setEnabled(false);
162-
mDrawerLayout.setScrimColor(Color.TRANSPARENT);
160+
mVersionTextView.setText(SysUtils.getVersionName(this));
161+
mEditorPager.setVisibility(View.VISIBLE);
163162

164-
final String version = SysUtils.getVersionName(this);
165-
mVersionTextView.setText(version);
163+
initToolbar();
166164

167-
mEditorPager.setVisibility(View.VISIBLE);
168-
initUI();
165+
mTabRecyclerView.setLayoutManager(new LinearLayoutManager(this));
166+
mTabManager = new TabManager(this);
167+
168+
initMenuView();
169169
intiDiagnosticView();
170170
processIntent();
171171
}
@@ -229,12 +229,7 @@ private void setScreenOrientation() {
229229
}
230230
}
231231

232-
private void initUI() {
233-
mTabRecyclerView.setLayoutManager(new LinearLayoutManager(this));
234-
mDrawerLayout.setEnabled(true);
235-
236-
initToolbar();
237-
232+
private void initMenuView() {
238233
if (mMenuManager == null) {
239234
mMenuManager = new MenuManager(this);
240235
NavigationView rightMenu = findViewById(R.id.menuNavView);
@@ -253,7 +248,6 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
253248
private void initToolbar() {
254249
mToolbar.setNavigationIcon(R.drawable.ic_drawer_raw);
255250
mToolbar.setNavigationContentDescription(R.string.tab);
256-
mTabManager = new TabManager(this);
257251
}
258252

259253
@Override

libeditor/src/main/java/com/jecelyin/editor/v2/editor/EditorFragment.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import com.duy.ide.editor.editor.R;
2929
import com.duy.ide.editor.pager.EditorPageDescriptor;
3030
import com.duy.ide.editor.view.EditorView;
31-
import com.jecelyin.common.utils.DLog;
3231
import com.jecelyin.editor.v2.Preferences;
3332

3433
import java.io.File;

libeditor/src/main/java/com/jecelyin/editor/v2/manager/TabManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ public class TabManager implements ViewPager.OnPageChangeListener {
5252
private EditorFragmentPagerAdapter mEditorFragmentPagerAdapter;
5353

5454
public TabManager(SimpleEditorActivity activity) {
55-
this.mActivity = activity;
55+
mActivity = activity;
5656

57-
this.mTabAdapter = new TabAdapter();
57+
mTabAdapter = new TabAdapter();
5858
mTabAdapter.setOnClickListener(new View.OnClickListener() {
5959
@Override
6060
public void onClick(View v) {

0 commit comments

Comments
 (0)